我在线找到了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,然后它显示两个点,然后是数据集。你能告诉我一种方法来查看整个数据集,中间没有缺失值。提前谢谢
答案 0 :(得分:0)
根据您想要完整输出的原因,有不同的解决方案
a_third=int(len(y_test)/3)
print(y_test[:a_third])
print(y_test[a_third:-a_third])
print(y_test[-a_third:])
在我看来,最后一个选项真的很难看,应该避免。你可能想要第三个,但这取决于你的意图
答案 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笔记本之类的东西可以很容易地将所有这些“打印”命令强制到不同的行上,因此所有不同的结果都会有自己的小窗口,使它们分开并更容易阅读。