报错TypeError: '(slice(None, 1, None), 1)' is an invalid key

程序如下


import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.datasets import make_blobs
from sklearn.svm import SVC
dataset = pd.read_csv('zhendaorushuju.csv', encoding='gb18030')
Y = dataset[:+1,1]
X = dataset[:+1,:+1]
model=SVC(C=0.1,kernel='poly',degree=10)
model.fit(X,Y)
x_min,x_max=X[:,0].min()-1,X[:,0].max()+1
y_min,y_max=X[:,1].min()-1,X[:,1].max()+1
xx,yy=np.meshgrid(np.arange(x_min,x_max,0.02), np. arange(y_min,y_max,0.02))
z=model.predict(np.c_[xx.ravel(),yy.ravel()])
z=z.reshape(xx.shape)
plt.pcolormesh(xx,yy,z,cmap=plt.cm.Pastel1)
plt.scatter(X[:,0],X[:,1],s=80,c=Y,cmap=plt.cm.spring,edgecolors='k')
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classify")
plt.scatter(0,2,marker='*',c='red',s=200)
plt.show()
res = model.predict([[0,2]])
print('Classification flag: '+str(res))
print('Model score:{:.2f}' .format(model.score(X,Y)))

你得程序在下面两行中有问题:


Y = dataset[:+1,1]
X = dataset[:+1,:+1]

具体来说,pandas中的数据结构不支持这种索引方式。你可以使用iloc来进行行或者列的提取,例如

# 提取第一例数据
Y = dataset.iloc[:, 1].values
# 提取前两列数据
X = dataset.iloc[:, :2].values
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7423349
  • 除此之外, 这篇博客: 解决:TypeError: '(slice(None, None, None), 1)' is an invalid key中的 解决 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    将DataFrame对象X_df转成ndarray数组即可

    from sklearn.cluster import DBSCAN
    import pandas as pd
    import matplotlib.pyplot as plt
    
    def devicesDbscan():
        path="./unique_deviceID_lng_lat.csv"
        df=pd.read_csv(path,header=None,names=["DEVICE_ID","LNG","LAT"])
        print(df.shape())
        X_df=df.drop("DEVICE_ID",axis=1)
        y_pred=DBSCAN(eps=0.1,min_samples=1,n_jobs=20).fit_predict(X_df)
        count_clusters = len(set(y_pred))
        print("clusters的数目:"+str(count_clusters))
        plt.scatter(X_df.values[:,0],X_df.values[:,1],c=y_pred)
        plt.show()
    
    if __name__=="__main__":
        devicesDbscan()

     

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^