我在Udemy上学习KNN。这个数据集是从这里下载的。
当我尝试运行以下代码时:
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltdataset = pd.read_csv('Social_Network_Ads.csv')x = dataset.iloc[:, [2, 3]].valuesy = dataset.iloc[:, 4:].valuesfrom sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=0)from sklearn.preprocessing import StandardScalersc = StandardScaler()x_train = sc.fit_transform(x_train)x_test = sc.transform(x_test)from sklearn.neighbors import KNeighborsClassifierclassifier = KNeighborsClassifier(n_neighbors=5, metric='minkowski', p=2)classifier.fit(x_train, y_train.ravel())y_pred = classifier.predict(x_train)from sklearn.metrics import confusion_matrixcm = confusion_matrix(y_test, y_pred)
我得到了以下错误:
Traceback (most recent call last): File “/home/ashutosh/Machine Learning A-Z Template Folder/Part 3 – Classification/Section 15 – K-Nearest Neighbors (K-NN)/knn(1).py”, line 24, in cm = confusion_matrix(y_test, y_pred)
File “/home/ashutosh/.local/lib/python3.7/site-packages/sklearn/metrics/_classification.py”, line 268, in confusion_matrix y_type, y_true, y_pred = _check_targets(y_true, y_pred)
File “/home/ashutosh/.local/lib/python3.7/site-packages/sklearn/metrics/_classification.py”, line 80, in _check_targets check_consistent_length(y_true, y_pred)
File “/home/ashutosh/.local/lib/python3.7/site-packages/sklearn/utils/validation.py”, line 212, in check_consistent_length ” samples: %r” % [int(l) for l in lengths])
ValueError: 发现输入变量的样本数量不一致:[100, 300]
回答:
修改代码行:
y_pred = classifier.predict(x_train)
为:
y_pred = classifier.predict(x_test)
这样就可以了。