使用Python改进监督学习模型

Tavish Aggarwal.

在机器学习的旅程中,我们使用K-最近邻算法产生了监督学习培训模型。一旦模型生成,我们探讨了测量模型准确性的技术。

如果您错过了它,我强烈建议经历以下帖子:

  1. Python监督学习的k-最近邻域算法
  2. 使用Python的模型的准确性

到目前为止,我们已经学习了惊人的技能来生成北京快3app科学模型并测量其准确性。现在,可能会思考的问题是:“模型的准确性与预期不匹配。我可以做些什么来提高模型的准确性?”

有效的想法。在这篇文章中,我们将研究一些最佳实践来生成模型。或者换句话说,我们将看待调整模型的技术。

让我们开始吧。我们将详细介绍提到的技术:

  1. 清洁北京快3app集
  2. 分类北京快3app
  3. 规范北京快3app

清洁北京快3app集

这是生成北京快3app科学模型的整个过程中最重要的步骤。如果您没有以下类似的北京快3app集:

  1. 北京快3app集具有缺少值
  2. 北京快3app集具有重复的记录...等

然后,可能你的准确性会受到很大的影响。

We can use Imputer method provided by sklearn to clean the dataset. Let's look at an example shown below:


from sklearn.preprocessing import Imputer
from sklearn.pipeline import Pipeline
from sklearn.svm import SVC

# Pipeline
steps = [('imputation', Imputer(missing_values='NaN', strategy='most_frequent', axis=0)),
        ('SVM', SVC())]

pipeline = Pipeline(steps)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state=42)

pipeline.fit(X_train, y_train)

y_pred = pipeline.predict(X_test)

print(classification_report(y_test, y_pred))

在我的帖子里 机器学习:清洁北京快3app,我详细介绍了北京快3app科学家使用的最常用技术来清理北京快3app集。我建议您通过它以更好地了解并具有正确的心态。

分类北京快3app

我们的北京快3app集有很高的机会,具有很少的列具有分类北京快3app。将这些列转换为类别将对模型的准确性产生剧烈影响。考虑我们有student_status列的一个例子,它有两个值“传递”和“失败”。 

由于列值是文本,Scikit-rearing任何其他套餐都无法处理文本。因此,我们需要将列转换为整数以提高模型性能。在这里,我们可以将“传递”转换为1,然后“失败”到0.考虑一个例子如下所示:

df_students = pd.get_dummies(df)

df_students = pd.get_dummies(df, drop_first=True)

print(df_students.columns)

You can observe in the above example that we are using the get_dummies function provided by pandas to convert column to categorical columns. You might have observed column names are created in the format of columnName_categoryName.

一旦我们创建了分类列,您就可以使用新北京快3app集继续生成模型的过程。在模型中有高度提高性能的机会。

规范北京快3app

有符合KNN(k最近邻算法)的算法,它使用距离进行决策。如果我们的北京快3app变化了很多(即北京快3app集具有高标准偏差)。我们还能期待准确的北京快3app模型吗?

我们需要将北京快3app正常化以减少北京快3app集中的高标准偏差。有各种技术可以正常化北京快3app。这些如下所示:

  1. 标准化:减去均值和逐方划分
  2. 减去最小并除以范围
  3. 标准化为-1到+1之间的范围北京快3app

标准化

我们可以使用比例函数来标准化值。考虑下面显示的示例:

from sklearn.preprocessing import scale
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import numpy as np

irisData = load_iris()

X = irisData.data
y = irisData.target

X_scaled = scale(X)

X_train_scaled, X_test_scaled, y_train_scaled, y_test_scaled = train_test_split(X_scaled, y, 
                                               test_size = 0.5, random_state=24)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.5, random_state=24)

knn_scaled = KNeighborsClassifier().fit(X_train_scaled, y_train_scaled)
knn = KNeighborsClassifier().fit(X_train, y_train)

print(knn_scaled.score(X_test_scaled, y_test_scaled))
print(knn.score(X_test, y_test))

print("Standard Deviation of features before scaling: ", np.std(X))
print("Standard Deviation of features after scaling: ", np.std(X_scaled))

在上面显示的示例中,以显示缩放和未划算北京快3app之间的差异,我有:

  • 计算缩放和未划算北京快3app的KNN精度分数。
  • 缩放和未划分北京快3app的标准偏差。

请运行代码以在缩放和未划算的北京快3app之间看到差异。

我们还可以创建管道并执行操作以标准化北京快3app。考虑下面显示的示例:

from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

irisData = load_iris()

X = irisData.data
y = irisData.target

steps = [('scaler', StandardScaler()), ('knn', KNeighborsClassifier())]

pipeline = Pipeline(steps)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.5, random_state=24)

knn_scaled = pipeline.fit(X_train, y_train)
knn_unscaled = KNeighborsClassifier().fit(X_train, y_train)

print('Accuracy after scaling: ',knn_scaled.score(X_test, y_test))
print('Accuracy without scaling: ', knn_unscaled.score(X_test, y_test))

它类似于我们之前见过的第一个例子。在此,而不是缩放北京快3app然后拆分,我们正在生成管道以缩放北京快3app。

概括

在此帖子中,我们已经学习了必须遵循的技术来生成优化的模型。我们了解了可以产生更好的性能的清洁,分类和标准化北京快3app集。

我们必须考虑提到的技术必须接近我们的北京快3app集(如果可能的话)。作为一个新手,北京快3app集没有提到优化的很高机会,并且您正在抓住您的头以提高模型性能。

您是否在生成模型之前清洁,分类和规范北京快3app集?请在下面的评论部分通知我。快乐学习!

作者信息

Tavish Aggarwal.

网站: http://tavishaggarwal.com

Tavish Aggarwal.是一个北京快3app科学家 在一个海德拉巴工作,具有广泛的经验,在跨电子商务,财务,医疗保健等等不同领域解决现实世界的业务问题。 他对技术充满热情,喜欢在团队中工作。