Python中K近邻分类算法

时间:2018-01-31 14:53:33

标签: python knn

我在线找到了K-NN分类技术的代码,我想打印所有预测值和测试数据集的值。但它只显示了一半的数据集。如果您能告诉我们如何查看整个数据集,那将非常有用。

maxrecursion

这是我正在使用的代码。下面是它显示的输出。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix
from sklearn.metrics import f1_score
from sklearn.metrics import accuracy_score

dataset = pd.read_csv('E:\pima-indians-diabetes.data.csv')



x = dataset.iloc[:, 0:8]
y = dataset.iloc[:, 8]
X_train, X_test, y_train, y_test = train_test_split(x , y, random_state= 0, test_size= 0.2)


sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)


classifier = KNeighborsClassifier(n_neighbors = 10, p=2, metric = 'minkowski')

classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)


cm = confusion_matrix(y_test, y_pred)
print(cm)
print(f1_score(y_test, y_pred))
print(accuracy_score(y_test, y_pred))
print(max(y_test.mean(), 1-y_test.mean()))
print (y_pred)
print (y_test)

正如您所看到的,在打印测试数据集时,它显示的值直到496,然后它显示两个点,然后是数据集。你能告诉我一种方法来查看整个数据集,中间没有缺失值。提前谢谢

2 个答案:

答案 0 :(得分:0)

根据您想要完整输出的原因,有不同的解决方案

在我看来,最后一个选项真的很难看,应该避免。你可能想要第三个,但这取决于你的意图

答案 1 :(得分:0)

嗯,“打印整个数据集”与打印“测试”数据集不同,因为我们将“整个”数据集拆分为训练和测试。并且因为看起来print('y_test')是你想要不被中间的“...”截断的东西,让我们尝试打印它。

当你调用print(y_test) python试图返回一个很长的列表时,它假定你不想看到整个事情,因为它太长了。

你可以试试这个: Pythonic way to print list items

print(*y_test, sep='\n')

其中'sep=\n'告诉python将所有内容强制转换为新行,y_test前面的*字符在此解释: What does asterisk * mean in Python?

顺便说一句,诸如jupyter笔记本之类的东西可以很容易地将所有这些“打印”命令强制到不同的行上,因此所有不同的结果都会有自己的小窗口,使它们分开并更容易阅读。