我正在使用pima indians
数据集。通过read_csv
阅读文件后,shape
看起来很擅长(768,9)
。但是对前8列进行子集化会导致形状的columns
维度丢失:
pima = pd.read_csv('/git/uni/data/pima-indians-diabetes.csv', header=0)
X = pima.iloc[:,-1]
Y = pima.iloc[:,:-1]
gnb = GaussianNB()
y_pred = gnb.fit(X,Y) # .predict(pima)
这里的惊喜是X.shape
: 为什么形状会丢失?
`pima.shape =(768,9) X.shape =(768,) Y.shape =(768,8)
然后我们被fit
:
ValueError: Expected 2D array, got 1D array instead:
array=[1 0 1 ..., 0 1 0].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
更新我还尝试了X = pima.iloc[:,-1].values
,但它提供了相同的结果/行为
答案 0 :(得分:2)
您向后定义了X和Y,X是要素列:-1
,而Y,即目标,是您的最后一列-1
。而且,标准约定是使用X(大写)和y(小写)。
因此,您的代码应如下所示:
X=pima.iloc[:,:-1]
y=pima.iloc[:,-1]
gnb = GaussianNB()
y_pred = gnb.fit(X,y)
答案 1 :(得分:1)
你混淆了名字,你的x应该是y,反之亦然
Y= pima.iloc[:,-1]
X = pima.iloc[:,:-1]