我的代码是:
import pandas as pd
import numpy as np
from sklearn import svm
name = '../CLIWOC/CLIWOC15.csv'
data = pd.read_csv(name)
# Get info into dataframe and drop NaNs
data = pd.concat([data.UTC, data.Lon3, data.Lat3, data.Rain]).dropna(how='any')
# Set target
X = data.loc[:, ['UTC', 'Lon3', 'Lat3']]
y = data['Rain']
# Partition a test set
Xtest = X[-1]
ytest = y[-1]
X = X[1:-2]
y = y[1:-2]
# Train classifier
classifier = svm.svc(gamma=0.01, C=100.)
classifier.fit(X, y)
classifier.predict(Xtest)
y
到达'set target'部分时,编译器返回错误'Too Many Indexers'。我直接从文档中提取了这个语法,所以我不确定哪里出错了。csv是用这些数据列的标题来组织的。
没有您的数据,很难验证。但是,我立即怀疑您需要传递numpy数组而不是DataFrame。
尝试这样提取它们:
# Set target
X = data.loc[:, ['UTC', 'Lon3', 'Lat3']].values
y = data['Rain'].values
使用data.loc[['UTC', 'Lon3', 'Lat3']]
。这也将在iloc方法中工作。
不要使用类似的数据。loc[:, 0] etc…