[0:5] 和 neigh 有啥用(写在分配 neigh 之后的下一行)?

Posted

技术标签:

【中文标题】[0:5] 和 neigh 有啥用(写在分配 neigh 之后的下一行)?【英文标题】:What is the use of [0:5] and neigh (written in next line after assigning neigh)?[0:5] 和 neigh 有什么用(写在分配 neigh 之后的下一行)? 【发布时间】:2020-10-18 16:52:39 【问题描述】:

df.head() 的用途是返回前五行代码中为什么使用 [0:5] 以及写在“预处理”行之后的 X[0:5] 有什么用?在拟合“neigh”后的 KNeighbourClassifier 中,为什么在下一行使用另一个“neigh”?请帮忙,谢谢。

import itertools
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import NullFormatter
import pandas as pd
import numpy as np
import matplotlib.ticker as ticker
from sklearn import preprocessing

    
df = pd.read_csv('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/teleCust1000t.csv')
df.head()

df['custcat'].value_counts()

df.hist(column='income', bins=50)

df.columns

X = df[['region', 'tenure','age', 'marital', 'address', 'income', 'ed', 'employ','retire', 'gender', 'reside']] .values  #.astype(float)
X[0:5]

y = df['custcat'].values
y[0:5]

X = preprocessing.StandardScaler().fit(X).transform(X.astype(float))
X[0:5]

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)
print ('Train set:', X_train.shape,  y_train.shape)
print ('Test set:', X_test.shape,  y_test.shape)

from sklearn.neighbors import KNeighborsClassifier

k = 4
#Train Model and Predict  
neigh = KNeighborsClassifier(n_neighbors = k).fit(X_train,y_train)
neigh

yhat = neigh.predict(X_test)
yhat[0:5]

from sklearn import metrics
print("Train set Accuracy: ", metrics.accuracy_score(y_train, neigh.predict(X_train)))
print("Test set Accuracy: ", metrics.accuracy_score(y_test, yhat))

http://localhost:8888/notebooks/Downloads/ML0101EN-Clas-K-Nearest-neighbors-CustCat-py-v1.ipynb

【问题讨论】:

这段代码中有很多看似无用的表达式语句。我怀疑您打算在交互式会话中逐行运行此代码,以便执行yhat = neigh.predict(X_test) 来设置yhat 的值,然后执行yhat[0:5] 来感受之前predict 方法返回的内容继续使用yhat的以下代码。 链接到localhost 对任何人都没有帮助。 很抱歉我不知道。有没有上传那个文件? 【参考方案1】:

CRISP-DM 的第 3 步是“探索和清理您的数据”。在此步骤中,您需要查看数据以判断其质量。所以你需要在每一步之后都有一些可见的输出。

此代码用于Jupyter 笔记本。 Jupyter 笔记本将显示表达式的结果。它的作用类似于print(),但更智能,因此可以显示图像、表格等。

但是,它只会在单元格的最后一行生成该输出。将所有代码复制并粘贴到单个单元格中会减少输出,并且会更难进行分析,因为您看不到中间的所有步骤。

这是df.head() 可能输出的简短示例

同样,其他看似无用的语句也会产生输出:

来自cmets:

请您回答为什么他们使用前 3 个 [0:5],更重要的是第 3 个 [0:5]?为什么在“neigh = KNeighborsClassifier(n_neighbors = k).fit(X_train,y_train)”行之后的“KNeighbourClassifier”部分使用“neigh”?

X[0:5] 将显示 X 的前 5 个值。 Y[0:5] 将显示 Y 的前 5 个值。 neigh 将显示 neigh 是什么。

最后一个请。 bins=50 是什么意思?

它告诉hist() 在图表中创建 50 个而不是 10 个。这样您可以更好地判断值的分布。

Jupyter notebook 的好处(您似乎还没有发现)是您可以轻松更改语句并立即获得新的输出。获取一个新的 Jupyter 笔记本,输入一行代码。按 Ctrl+Enter,然后对下一行执行相同操作。你会看到它的作用。

【讨论】:

您能回答为什么他们使用前 3 [0:5],更重要的是使用第 3 [0:5] 吗?为什么在“neigh = KNeighborsClassifier(n_neighbors = k).fit(X_train,y_train)”行之后的“KNeighbourClassifier”部分使用“neigh”? X[0:5] 将显示 X 的前 5 个值。 Y[0:5] 将显示 Y 的前 5 个值。 neigh 将显示 neigh 是什么。 最后一个请。 bins=50 是什么意思? 它告诉 hist() 在图表中创建 50 条而不是 10 条。 如果解决方案对您有用,您可以点击此答案上的复选标记。这样其他人就会知道这个问题有答案。

以上是关于[0:5] 和 neigh 有啥用(写在分配 neigh 之后的下一行)?的主要内容,如果未能解决你的问题,请参考以下文章

即使没有对齐,GCC 分配的堆栈空间也比本地所需的更多。空间有啥用?

typedef有啥用?

为啥 malloc 返回一个指针?指针有啥用?

右值引用成员变量有啥用

Linux中文件目录的inode 号有啥用?

求大神指教 51单片机 keil 的 options里面memory model的设置都有啥用啊?