如何在 Python 中开始机器学习?(小白必看)

2023-11-12

其实学习机器学习的最好方法是设计和完成小项目。

Python 是一种流行且功能强大的解释型语言。与 R 不同,Python 是一种完整的语言和平台,可用于研究和开发以及开发生产系统。

还有很多模块和库可供选择,提供多种方式来完成每项任务。

开始使用 Python 进行机器学习的最佳方式是完成一个项目。

  • 安装并启动 Python 解释器。
  • 逐步完成一个小项目的、图。
  • 在其中你也会收获成就感,一边接下来一直做下去

初学者需要一个小的端到端项目

大家可以参考一下基础步骤:

  1. 定义问题。
  2. 准备数据。
  3. 评估算法。
  4. 改善结果。
  5. 呈现结果。

真正适应新平台或工具的最佳方法是端到端地完成机器学习项目并涵盖关键步骤。就是从加载数据、汇总数据、评估算法和做出一些预测。

做完这些之后,你就有了一个模板,你可以在其他数据集上使用,之后再进一步的数据准备和改进结果任务。

Python 中的机器学习:分步教程

在本节中,我们将端到端地完成一个小型机器学习项目。

以下是我们将要介绍的内容的概述:

  1. 安装 Python 和 SciPy 平台。
  2. 加载数据集。
  3. 总结数据集。
  4. 可视化数据集。
  5. 评估一些算法。
  6. 做出一些预测。

完成每一步,尝试自己输入命令或复制并粘贴命令。

具体操作教程:

1. 下载、安装和启动 Python SciPy

系统上安装 Python 和 SciPy 平台,

1.1 安装 SciPy 库

本教程假设 Python 版本为 2.7 或 3.6+。

您需要安装 5 个关键库。以下是本教程所需的 Python SciPy 库列表:

  • scipy
  • numpy
  • matplotlib
  • pandas
  • sklearn

有很多方法可以安装这些库。我最好的建议是选择一种方法。

该SciPy的安装页面提供了多个不同的平台,如Linux,Mac OS X和Windows上安装上述库极好的说明。(觉得使用记得给小普一个点赞,编辑不易~)

  • 在 Mac OS X 上,您可以使用 macports 来安装 Python 3.6 和这些库。
  • 在 Linux 上,您可以使用包管理器(例如 Fedora 上的 yum)来安装 RPM。

如果您使用的是 Windows ,我建议安装Anaconda的免费版本。

注意:本教程假设您安装了 scikit-learn 0.20 或更高版本。

需要的话,小普会出一些教程:

如何使用Anaconda为机器学习设置Python环境

如何使用Python3创建用于机器学习的Linux虚拟机

1.2 启动Python并检查版本

确保您的 Python 环境已成功安装并按预期工作是一个好主意。

下面的脚本将帮助您测试您的环境。它导入本教程中所需的每个库并打印版本。

打开命令行并启动python解释器:

python

我建议直接在解释器中工作或编写脚本而不是大型编辑器和 IDE 上运行它们,专注于机器学习而不是工具链。

键入或复制并粘贴以下脚本:

# Check the versions of libraries
 
# Python version
import sys
print('Python: {}'.format(sys.version))
# scipy
import scipy
print('scipy: {}'.format(scipy.__version__))
# numpy
import numpy
print('numpy: {}'.format(numpy.__version__))
# matplotlib
import matplotlib
print('matplotlib: {}'.format(matplotlib.__version__))
# pandas
import pandas
print('pandas: {}'.format(pandas.__version__))
# scikit-learn
import sklearn
print('sklearn: {}'.format(sklearn.__version__))

 这是我在 OS X 工作站上得到的输出:

Python: 3.6.11 (default, Jun 29 2020, 13:22:26) 
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)]
scipy: 1.5.2
numpy: 1.19.1
matplotlib: 3.3.0
pandas: 1.1.0
sklearn: 0.23.2

将上述输出与您的版本进行比较。

理想情况下,你的版本应该匹配或更新。API 不会快速更改,因此如果你落后几个版本,这个教程也适用。

2. 加载数据

我们将使用鸢尾花数据集。这个数据集很出名,因为它被几乎所有人用作机器学习和统计中的“hello world”数据集。

该数据集包含 150 个鸢尾花的观察结果。花有四列以厘米为单位的测量值。第五列是观察到的花的种类。所有观察到的花都属于三个物种之一。

你可以网商搜索相关数据集

在这一步中,我们将从 CSV 文件 URL 加载。

2.1 导入库

首先,让我们导入我们将在本教程中使用的所有模块、函数和对象。

# Load libraries
from pandas import read_csv
from pandas.plotting import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
...

如果有错误,可能需要一个有效的 SciPy 环境。请参阅上面有关设置环境的建议。

2.2 加载数据集

我们可以直接从 UCI 机器学习存储库加载数据。

我们正在使用Pandas 加载数据。接下来,我们还将使用 Pandas 通过描述性统计和数据可视化来探索数据。

请注意,我们在加载数据时指定了每列的名称。这将有助于稍后我们探索数据。

# Load dataset
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)

数据集应该正常加载。

如果您确实有网络问题,您可以将iris.csv文件下载到您的工作目录并使用相同的方法加载它,将 URL 更改为本地文件名。

3. 总结数据集

现在是查看数据的时候了。

在这一步中,我们将通过几种不同的方式查看数据:

  1. 数据集的维度。
  2. 查看数据本身。
  3. 所有属性的统计汇总。
  4. 按类变量细分数据。

别着急,每看一次数据就是一个命令。这些是有用的命令,您可以在未来的项目中反复使用。

3.1 数据集维度

我们可以通过 shape 属性快速了解数据包含多少个实例(行)和多少个属性(列)。

...
# shape
print(dataset.shape)

应该看到 150 个实例和 5 个属性:

(150, 5)

3.2 查看数据

实际观察您的数据也总是一个好主意。

...
# head
print(dataset.head(20))

您应该看到数据的前 20 行:


    sepal-length  sepal-width  petal-length  petal-width        class
0            5.1          3.5           1.4          0.2  Iris-setosa
1            4.9          3.0           1.4          0.2  Iris-setosa
2            4.7          3.2           1.3          0.2  Iris-setosa
3            4.6          3.1           1.5          0.2  Iris-setosa
4            5.0          3.6           1.4          0.2  Iris-setosa
5            5.4          3.9           1.7          0.4  Iris-setosa
6            4.6          3.4           1.4          0.3  Iris-setosa
7            5.0          3.4           1.5          0.2  Iris-setosa
8            4.4          2.9           1.4          0.2  Iris-setosa
9            4.9          3.1           1.5          0.1  Iris-setosa
10           5.4          3.7           1.5          0.2  Iris-setosa
11           4.8          3.4           1.6          0.2  Iris-setosa
12           4.8          3.0           1.4          0.1  Iris-setosa
13           4.3          3.0           1.1          0.1  Iris-setosa
14           5.8          4.0           1.2          0.2  Iris-setosa
15           5.7          4.4           1.5          0.4  Iris-setosa
16           5.4          3.9           1.3          0.4  Iris-setosa
17           5.1          3.5           1.4          0.3  Iris-setosa
18           5.7          3.8           1.7          0.3  Iris-setosa
19           5.1          3.8           1.5          0.3  Iris-setosa

3.3 统计汇总

现在我们可以看一下每个属性的摘要。

这包括计数、平均值、最小值和最大值以及一些百分位数。

...
# descriptions
print(dataset.describe())

我们可以看到,所有的数值都具有相同的刻度(厘米),并且在 0 到 8 厘米之间具有相似的范围。

       sepal-length  sepal-width  petal-length  petal-width
count    150.000000   150.000000    150.000000   150.000000
mean       5.843333     3.054000      3.758667     1.198667
std        0.828066     0.433594      1.764420     0.763161
min        4.300000     2.000000      1.000000     0.100000
25%        5.100000     2.800000      1.600000     0.300000
50%        5.800000     3.000000      4.350000     1.300000
75%        6.400000     3.300000      5.100000     1.800000
max        7.900000     4.400000      6.900000     2.500000

3.4 类分布

现在让我们看看属于每个类的实例(行)数。我们可以将其视为绝对计数。

...
# class distribution
print(dataset.groupby('class').size())

我们可以看到每个类都有相同数量的实例(数据集的 50 或 33%)。

class
Iris-setosa        50
Iris-versicolor    50
Iris-virginica     50

3.5 完整示例

作为参考,我们可以将之前的所有元素组合到一个脚本中。

下面列出了完整的示例。

4. 数据可视化

我们现在对数据有了一个基本的了解。我们需要通过一些可视化来扩展它。

我们将看两种类型的图:

  1. 单变量图以更好地理解每个属性。
  2. 多变量图以更好地理解属性之间的关系。

4.1 单变量图

我们从一些单变量图开始,即每个单独变量的图。

鉴于输入变量是数字变量,我们可以创建每个变量的箱线图。

...
# box and whisker plots
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
pyplot.show()

这让我们对输入属性的分布有了更清晰的了解:

我们还可以创建每个输入变量的直方图以了解分布情况。

...
# histograms
dataset.hist()
pyplot.show()

 看起来可能有两个输入变量具有高斯分布。这很有用,因为我们可以使用可以利用这个假设的算法。

 

4.2 多元图

现在我们可以看看变量之间的相互作用。

首先,让我们看一下所有属性对的散点图。这有助于发现输入变量之间的结构化关系。

...
# scatter plot matrix
scatter_matrix(dataset)
pyplot.show()

注意一些属性对的对角线分组。这表明高度相关性和可预测的关系。

.3 完整示例

作为参考,我们可以将之前的所有元素组合到一个脚本中。

下面列出了完整的示例。

 

# visualize the data
from pandas import read_csv
from pandas.plotting import scatter_matrix
from matplotlib import pyplot
# Load dataset
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)
# box and whisker plots
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
pyplot.show()
# histograms
dataset.hist()
pyplot.show()
# scatter plot matrix
scatter_matrix(dataset)
pyplot.show()

5. 评估一些算法

现在是时候创建一些数据模型并估计它们对看不见的数据的准确性了。

这是我们将在此步骤中介绍的内容:

  1. 分离出一个验证数据集。
  2. 设置测试工具以使用 10 折交叉验证。
  3. 建立多个不同的模型,从花卉测量中预测物种
  4. 选择最佳模型。

5.1 创建验证数据集

我们需要知道我们创建的模型是好的。

稍后,我们将使用统计方法来估计我们在看不见的数据上创建的模型的准确性。我们还希望通过在实际未见数据上评估最佳模型对未见数据的准确性进行更具体的估计。

也就是说,我们将保留一些算法不会看到的数据,我们将使用这些数据来获得关于最佳模型实际上可能有多准确的第二个独立想法。

我们将加载的数据集分成两部分,其中 80% 将用于训练、评估和在模型中选择,20% 将作为验证数据集保留。

...
# Split-out validation dataset
array = dataset.values
X = array[:,0:4]
y = array[:,4]
X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1)

您现在在X_trainY_train 中拥有用于准备模型的训练数据以及我们稍后可以使用的X_validationY_validation集。

请注意,我们使用 Python 切片来选择 NumPy 数组中的列。

5.2 测试线束

我们将使用分层 10 折交叉验证来估计模型准确性。

这会将我们的数据集分成 10 个部分,对 9 部分进行训练,对 1 部分进行测试,并对所有训练-测试分割组合重复。

分层意味着数据集的每次折叠或拆分都旨在使示例在整个训练数据集中的分布相同。

我们通过random_state参数将随机种子设置为固定数字,以确保在训练数据集的相同分割上评估每个算法。

我们正在使用“准确度”指标来评估模型。

这是正确预测的实例数除以数据集中的实例总数再乘以 100 的比率(例如,准确率为 95%)。我们将在 接下来运行构建和评估每个模型时使用评分变量。

5.3 构建模型

我们不知道哪种算法可以很好地解决这个问题或使用什么配置。

我们从图中得到一个想法,即某些类在某些维度上是部分线性可分的,因此我们期望得到总体上良好的结果。

让我们测试 6 种不同的算法:

  • 逻辑回归 (LR)
  • 线性判别分析 (LDA)
  • K-最近邻(KNN)。
  • 分类和回归树 (CART)。
  • 高斯朴素贝叶斯 (NB)。
  • 支持向量机 (SVM)。

这是简单线性(LR 和 LDA)、非线性(KNN、CART、NB 和 SVM)算法的良好混合。

让我们构建和评估我们的模型:

...
# Spot Check Algorithms
models = []
models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC(gamma='auto')))
# evaluate each model in turn
results = []
names = []
for name, model in models:
	kfold = StratifiedKFold(n_splits=10, random_state=1, shuffle=True)
	cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')
	results.append(cv_results)
	names.append(name)
	print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))

5.4 选择最佳模型

我们现在有 6 个模型和每个模型的准确度估计。我们需要将模型相互比较并选择最准确的。

运行上面的例子,我们得到以下原始结果:

LR: 0.960897 (0.052113)
LDA: 0.973974 (0.040110)
KNN: 0.957191 (0.043263)
CART: 0.957191 (0.043263)
NB: 0.948858 (0.056322)
SVM: 0.983974 (0.032083)

注意:您的结果可能会因为算法或评估程序的随机性或数值精度的差异而有所不同。考虑多次运行该示例并比较平均结果。

你得了多少分?
在下面的评论中发布您的结果。

在这种情况下,我们可以看到支持向量机 (SVM) 的估计准确度得分最高,约为 0.98 或 98%。

我们还可以创建模型评估结果图,并比较每个模型的传播和平均准确度。每个算法都有一组准确度度量,因为每个算法都被评估了 10 次(通过 10 倍交叉验证)。

比较每个算法的结果样本的一种有用方法是为每个分布创建一个箱线图并比较这些分布。

...
# Compare Algorithms
pyplot.boxplot(results, labels=names)
pyplot.title('Algorithm Comparison')
pyplot.show()

我们可以看到盒须图在范围的顶部被压扁,许多评估达到了 100% 的准确度,有些则推到了 80% 的高准确度。

5.5 完整示例

作为参考,我们可以将之前的所有元素组合到一个脚本中。

下面列出了完整的示例。

# compare algorithms
from pandas import read_csv
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import StratifiedKFold
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
# Load dataset
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)
# Split-out validation dataset
array = dataset.values
X = array[:,0:4]
y = array[:,4]
X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1, shuffle=True)
# Spot Check Algorithms
models = []
models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC(gamma='auto')))
# evaluate each model in turn
results = []
names = []
for name, model in models:
	kfold = StratifiedKFold(n_splits=10, random_state=1, shuffle=True)
	cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')
	results.append(cv_results)
	names.append(name)
	print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))
# Compare Algorithms
pyplot.boxplot(results, labels=names)
pyplot.title('Algorithm Comparison')
pyplot.show()

 

6. 做出预测

我们必须选择一种算法来进行预测。

上一节的结果表明 SVM 可能是最准确的模型。我们将使用这个模型作为我们的最终模型。

现在我们想了解模型在验证集上的准确性。

这将使我们对最佳模型的准确性进行独立的最终检查。保留验证集很重要,以防万一您在训练过程中出现失误,例如过度拟合训练集或数据泄漏。这两个问题都会导致过于乐观的结果。

6.1 做出预测

我们可以在整个训练数据集上拟合模型并对验证数据集进行预测。

...
# Make predictions on validation dataset
model = SVC(gamma='auto')
model.fit(X_train, Y_train)
predictions = model.predict(X_validation)

6.2 评估预测

我们可以通过将预测与验证集中的预期结果进行比较来评估预测,然后计算分类准确率,以及混淆矩阵和分类报告。

....
# Evaluate predictions
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))

我们可以看到,在保留数据集上的准确率为 0.966 或约 96%。

混淆矩阵提供了所犯错误的指示。

最后,分类报告按精度、召回率、f1-score 和显示出色结果的支持(假设验证数据集很小)提供了每个类别的细分。

0.9666666666666667
[[11  0  0]
 [ 0 12  1]
 [ 0  0  6]]
                 precision    recall  f1-score   support

    Iris-setosa       1.00      1.00      1.00        11
Iris-versicolor       1.00      0.92      0.96        13
 Iris-virginica       0.86      1.00      0.92         6

       accuracy                           0.97        30
      macro avg       0.95      0.97      0.96        30
   weighted avg       0.97      0.97      0.97        30

6.3 完整示例

作为参考,我们可以将之前的所有元素组合到一个脚本中。

下面列出了完整的示例。

# make predictions
from pandas import read_csv
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.svm import SVC
# Load dataset
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)
# Split-out validation dataset
array = dataset.values
X = array[:,0:4]
y = array[:,4]
X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1)
# Make predictions on validation dataset
model = SVC(gamma='auto')
model.fit(X_train, Y_train)
predictions = model.predict(X_validation)
# Evaluate predictions
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))

可以用 Python 进行机器学习

完成上面的教程。最多需要 5 到 10 分钟!

无需了解所有内容。你的目标是端到端地完成教程并获得结果。您不需要在第一遍就了解所有内容。一边走一边列出你的问题。大量使用Python中的help(“FunctionName”)帮助语法来了解您正在使用的所有函数。

不需要知道算法是如何工作的。了解限制以及如何配置机器学习算法很重要。但是可以稍后学习算法。你需要在很长一段时间内慢慢积累这些算法知识。今天,首先要熟悉这个平台。

无需成为 Python 程序员。如果您不熟悉 Python 语言,它的语法可能很直观。就像其他语言一样,关注函数调用(例如function())和赋值(例如a = “b”)。这将使您大获全胜。您是一名开发人员,您知道如何快速掌握一门语言的基础知识。刚开始,稍后再深入了解细节。

无需成为机器学习专家。您可以稍后了解各种算法的优点和局限性,并且您可以稍后阅读大量帖子,以了解机器学习项目的步骤以及使用交叉验证评估准确性的重要性。

机器学习项目中的其他步骤呢?我们没有涵盖机器学习项目中的所有步骤,因为这是您的第一个项目,我们需要关注关键步骤。即加载数据,查看数据,评估一些算法并进行一些预测。在后面的教程中,我们可以查看其他数据准备和结果改进任务。

概括

在本文中,您逐步了解了如何使用 Python 完成您的第一个机器学习项目。

您发现完成从加载数据到进行预测的小型端到端项目是熟悉新平台的最佳方式。

你的下一步

你完成了教程吗?

  1. 完成上述教程。
  2. 列出你的任何问题。
  3. 搜索或研究答案。
  4. 请记住,可以使用Python 中的help(“FunctionName”)来获取任何函数的帮助。

你有问题吗?
请写在下方的评论区,一起讨论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Python 中开始机器学习?(小白必看) 的相关文章

  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 使用 MongoDB 作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

    我们目前正在为一家专业公司内部实施类似 CRM 的解决方案 由于存储信息的性质以及信息的不同值和键 我们决定使用文档存储数据库 因为它完全适合目的 在本例中我们选择 MongoDB 作为此 CRM 解决方案的一部分 我们希望存储实体之间的关
  • Pandas set_levels,如何避免标签排序?

    我使用时遇到问题set levels多索引 from io import StringIO txt Name Height Age Metres A 1 25 B 95 1 df pd read csv StringIO txt heade
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • 为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件?

    当我使用内置的简单服务器时 一切正常 管理界面很漂亮 python manage py runserver 但是 当我尝试使用 wsgi 服务器为我的应用程序提供服务时django core handlers wsgi WSGIHandle
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 根据 Pandas 中的列表选择数据框行的子集

    我有一个数据框df1并列出x In 22 import pandas as pd In 23 df1 pd DataFrame C range 5 B range 10 20 2 A list abcde In 24 df1 Out 24
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是

随机推荐

  • 卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet

    摘要 CIFAR 10竞赛之后 卷积网络之父Yann LeCun接受相关采访 他认为 卷积网络需要大数据和高性能计算机的支持 深层卷积网络的训练时间不是问题 运行时间才是关键 Yann LeCun还分享了他正在做的一些最新研究 Kaggle
  • Centos7.6 源码编译部署percona mysql 5.7.39-42

    Centos7 6 源码编译部署percona mysql 5 7 39 42 参考链接 mysql5 7 35源码编译安装部署 CentOS7 编译安装 Percona Server 5 7 percona Server for MySQ
  • 年薪100万和10万程序员的差距

    点击蓝字关注 回复 职场进阶 获取职场进阶精品资料一份 我们看武侠大片 经常有那种本来可以练就绝世武功的大虾 阴差阳错练的走火入魔 一开始还可以硬撑 还能打败一些虾兵蟹将 遇见真正的高手 这些大虾们立马就败下阵来 其实程序员的职业生涯 如同
  • jquery获取上级、同级和下级元素

    1 JQuery parent expr 找父亲节点 可以传入expr进行过滤 比如 parent parent 或者 parent parent child 2 JQuery parents expr 查找所有祖先元素 不限于父元素 3
  • SQL Server安装教程(2022年更新)

    很多朋友在安装SQL Server的过程中会碰到一些小状况 今天就以Microsoft SQL Server2019为例来聊聊SQL Server安装的相关问题 提示 若之前安装过SQL Server 务必保证在重装前将其卸载干净 目录 1
  • ODrive踩坑(一)windows下使用环境的搭建,odrivetool及USB驱动的安装

    最近有空玩玩无刷电机 早就听说ODrive的控制效果不凡 淘宝400买来玩玩 电机使用我以前囤的几个拆机DJI 3512 别看拆机 但悟的电机是针不戳 编码器使用TLE5012B E1000磁编码器 干回老本行画了张PCB 一方面连接编码器
  • JS异常: Uncaught RangeError: Maximum call stack size exceeded

    今天被一个bug弄得头大 找了无数资料 网上说是递归函数的原因 https blog csdn net qq 30100043 article details 72642205 还是未能解决问题 继续找 最后在 https blog csd
  • 【故障集合】综合架构rsync服务与nfs服务错误集合(持续补充中)

    一 rsync服务 1 1 not a regular file 不是普通文件 scp跟cp类型 默认只能复制普通文件 复制目录 加上 r参数即可 root backup scp etc 172 16 1 31 tmp root 172 1
  • 软件设计七大原则

    在软件开发中 为了提高软件系统的可维护性和可复用性 增加软件的可扩展性和灵活性 程序员要尽量根据 7 条原则来开发程序 从而提高软件开发效率 节约软件开发成本和维护成本 我来依次来总结这 7 条原则 这 7 种设计原则是软件设计模式必须尽量
  • uni-app 框架超详细新手入门

    什么是uni app 介绍 uni app 是一个使用 Vue js 开发跨平台应用的前端框架 开发者通过编写 Vue js 代码 uni app 将其编译到iOS Android 微信小程序等多个平台 保证其正确运行并达到优秀体验 uni
  • 公网远程访问宝塔面板和网页【内网穿透】

    1 ngrok 限制带宽 不限制流量 进入ngrok官网 Sunny Ngrok内网转发内网穿透 国内内网映射服务器 1 注册 2 开通隧道 3 穿透网页 1 配置ngrok 输入网页本地地址和端口号 2 运行ngrok sunny cli
  • IntelliJ IDEA下载安装教程(超详细图解)

    1 IDEA的下载 官网链接 https www jetbrains com idea l 1 点击上面链接进入官网 点击Developer Tools 再点击 Intellij IDEA 2 点击Download 进入IDEA下载界面 3
  • Vue:数据双向绑定和v-系列指令

    Vue js是当下最火的一款前端框架了 学习的时候要多动手实践以帮助理解 我是通过例子来学习的 这样记的快一些 目录 Vue js介绍 如何引入Vue 何为声明式渲染 如何实现 文本插值 message v html v bind 绑定元素
  • 数组的添加和删除过滤方法总结es6 filter()

    es6 filter 数组过滤方法总结 Array every x gt x 是每一个都要满足 Array some x gt x 是有一个满足 Array find findIndex 返回符合条件的第一个值 Array filter 过
  • C语言,文件定位问题详解

    最近在完成上机题碰到文件操作 要求能够修改某一行的数据 关于这个问题 我们自然就会想到用fseek来定位然后修改这一行的内容 可是问题就来了 具体啥问题请往下看 比如说text txt的内容为 这时我想把第二内容改为24 很明显用fseek
  • union关键字,理解-应用场景-优点

    C语言共用体 C语言union用法 详解 biancheng net 理解为 需求场景 某变量可具有多重身份 然而在使用某变量时 它只能确定为其中一种身份 union关键字 这种好处是 既可以满足需求 又可以不浪费内存 union关键字创建
  • Spring MVC 起步

    一 MVC 首先http的请求到达前端控制器 前端知道具体的请求 将代理给到控制器 控制器了解具体的业务细节 因此调用业务逻辑 生成业务数据 并将业务数据返回给前端控制器 然后前端控制器将数据分发给我们的业务视图 由业务视图来呈现业务页面返
  • JS对于字符串的切割截取

    1 slice start end 方法 start 起始索引 开始位置 end 终止索引 结束位置 如果某个参数为负 则从字符串的结尾开始计数 如果省略第二个参数 则该方法将裁剪字符串的剩余部分 var str Apple Banana
  • Hash 函数及其重要性

    不时会爆出网站的服务器和数据库被盗取 考虑到这点 就要确保用户一些敏感数据 例如密码 的安全性 今天 我们要学的是 hash 背后的基础知识 以及如何用它来保护你的 web 应用的密码 申明 密码学是非常复杂的一门学科 我不是这方面的专家
  • 如何在 Python 中开始机器学习?(小白必看)

    其实学习机器学习的最好方法是设计和完成小项目 Python 是一种流行且功能强大的解释型语言 与 R 不同 Python 是一种完整的语言和平台 可用于研究和开发以及开发生产系统 还有很多模块和库可供选择 提供多种方式来完成每项任务 开始使