Python KNN模型的准确度得分(IRIS数据)

Python KNN模型的准确度得分(IRIS数据),python,algorithm,machine-learning,scikit-learn,knn,Python,Algorithm,Machine Learning,Scikit Learn,Knn,增加或稳定虹膜数据基本KNN模型的准确度得分(不显著变化)的一些关键因素是什么 企图 样本准确度得分 分类报告 样本混淆矩阵 iris数据集中只有3个类可用:iris Setosa、iris Virginica和iris Versicolor 使用此代码。这给了我97.78%的准确率 from sklearn import neighbors, datasets, preprocessing from sklearn.model_selection import train_test_split

增加或稳定虹膜数据基本KNN模型的准确度得分(不显著变化)的一些关键因素是什么

企图 样本准确度得分 分类报告 样本混淆矩阵
iris数据集中只有3个类可用:iris Setosa、iris Virginica和iris Versicolor

使用此代码。这给了我97.78%的准确率

from sklearn import neighbors, datasets, preprocessing
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix

iris = datasets.load_iris() 
X, y = iris.data[:, :], iris.target
Xtrain, Xtest, y_train, y_test = train_test_split(X, y, stratify = y, random_state = 0, train_size = 0.7)

scaler = preprocessing.StandardScaler().fit(Xtrain)
Xtrain = scaler.transform(Xtrain)
Xtest = scaler.transform(Xtest)

knn = neighbors.KNeighborsClassifier(n_neighbors=3)
knn.fit(Xtrain, y_train)
y_pred = knn.predict(Xtest)

print(accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))
print(confusion_matrix(y_test, y_pred))

iris数据集中只有3个类可用:iris Setosa、iris Virginica和iris Versicolor

使用此代码。这给了我97.78%的准确率

from sklearn import neighbors, datasets, preprocessing
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix

iris = datasets.load_iris() 
X, y = iris.data[:, :], iris.target
Xtrain, Xtest, y_train, y_test = train_test_split(X, y, stratify = y, random_state = 0, train_size = 0.7)

scaler = preprocessing.StandardScaler().fit(Xtrain)
Xtrain = scaler.transform(Xtrain)
Xtest = scaler.transform(Xtest)

knn = neighbors.KNeighborsClassifier(n_neighbors=3)
knn.fit(Xtrain, y_train)
y_pred = knn.predict(Xtest)

print(accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))
print(confusion_matrix(y_test, y_pred))

我建议调整k-NN的
k
值。由于iris是一个小数据集,并且平衡良好,因此我将执行以下操作:

For every value of `k` in range [2 to 10] (say) Perform a n-times k-folds crossvalidation (say n=20 and k=4) Store the Accuracy values (or any other metric) 对于[2到10]范围内的每个'k'值(例如) 执行n次k次交叉验证(假设n=20和k=4) 存储精度值(或任何其他度量) 根据平均值和方差绘制分数,并选择具有最佳k值的
k
。交叉验证的主要目标是估计测试误差,并在此基础上选择最终模型。会有一些差异,但应该小于0.03或类似的值。这取决于数据集和折叠次数。一个好的过程是,对于
k
的每个值,绘制所有20x4精度值的箱线图。选择下分位数与上分位数相交的
k
值,或者简单地说,精度变化不大(或其他度量值)

在此基础上选择
k
值后,目标是使用此值使用整个训练数据集构建最终模型。接下来,这可以用来预测新数据

另一方面,对于较大的数据集。做一个单独的测试分区(就像你在这里做的那样),然后只在训练集上调整
k
值(使用交叉验证,忘记测试集)。选择适当的
k
训练算法后,仅使用训练集进行训练。接下来,使用测试集报告最终值。不要根据测试集做出任何决定

另一种方法是训练、验证、测试划分。使用训练集训练,使用不同的
k
值训练模型,然后使用验证分区进行预测并列出分数。根据此验证分区选择最佳分数。接下来,使用训练集或训练+验证集,使用基于验证集选择的
k
值训练最终模型。最后,拿出测试集的测试结果并报告最终分数。同样,不要在其他地方使用测试集

这些是适用于任何机器学习或统计学习方法的通用方法

当您执行分区(训练、测试或交叉验证)时,需要注意的一件重要事情是使用,以便每个分区中的类比率保持不变

阅读更多关于。在科学中,学习很容易。如果使用R,则可以使用


要记住的主要一点是,目标是训练一个能在新数据上泛化的函数,或在新数据上表现良好的函数,而不仅仅是在现有数据上表现良好的函数。

我建议调整k-NN的
k
值。由于iris是一个小数据集,并且平衡良好,因此我将执行以下操作:

For every value of `k` in range [2 to 10] (say) Perform a n-times k-folds crossvalidation (say n=20 and k=4) Store the Accuracy values (or any other metric) 对于[2到10]范围内的每个'k'值(例如) 执行n次k次交叉验证(假设n=20和k=4) 存储精度值(或任何其他度量) 根据平均值和方差绘制分数,并选择具有最佳k值的
k
。交叉验证的主要目标是估计测试误差,并在此基础上选择最终模型。会有一些差异,但应该小于0.03或类似的值。这取决于数据集和折叠次数。一个好的过程是,对于
k
的每个值,绘制所有20x4精度值的箱线图。选择下分位数与上分位数相交的
k
值,或者简单地说,精度变化不大(或其他度量值)

在此基础上选择
k
值后,目标是使用此值使用整个训练数据集构建最终模型。接下来,这可以用来预测新数据

另一方面,对于较大的数据集。做一个单独的测试分区(就像你在这里做的那样),然后只在训练集上调整
k
值(使用交叉验证,忘记测试集)。选择适当的
k
训练算法后,仅使用训练集进行训练。接下来,使用测试集报告最终值。不要根据测试集做出任何决定

另一种方法是训练、验证、测试划分。使用训练集训练,使用不同的
k
值训练模型,然后使用验证分区进行预测并列出分数。根据此验证分区选择最佳分数。接下来,使用训练集或训练+验证集,使用基于验证集选择的
k
值训练最终模型。最后,拿出测试集的测试结果并报告最终分数。同样,不要在其他地方使用测试集

这些是适用于任何机器学习或统计学习方法的通用方法

当您执行分区(训练、测试或交叉验证)时,需要注意的一件重要事情是使用,以便每个分区中的类比率保持不变

阅读更多关于。在科学中,学习很容易。如果使用R,则可以使用


要记住的主要一点是,目标是训练一个能在新数据上泛化的函数,或在新数据上表现良好的函数,而不仅仅是在现有数据上表现良好的函数。

稳定t是什么意思
from sklearn import neighbors, datasets, preprocessing
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix

iris = datasets.load_iris() 
X, y = iris.data[:, :], iris.target
Xtrain, Xtest, y_train, y_test = train_test_split(X, y, stratify = y, random_state = 0, train_size = 0.7)

scaler = preprocessing.StandardScaler().fit(Xtrain)
Xtrain = scaler.transform(Xtrain)
Xtest = scaler.transform(Xtest)

knn = neighbors.KNeighborsClassifier(n_neighbors=3)
knn.fit(Xtrain, y_train)
y_pred = knn.predict(Xtest)

print(accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))
print(confusion_matrix(y_test, y_pred))
For every value of `k` in range [2 to 10] (say) Perform a n-times k-folds crossvalidation (say n=20 and k=4) Store the Accuracy values (or any other metric)