如何通过输入CSV文件在sklearn python中训练SVM模型?

时间:2019-02-22 04:44:34

标签: python scikit-learn

我已使用sklearn scikit python进行预测。导入以下软件包时

从sklearn导入数据集中并将结果存储在 iris = datasets.load_iris()中,可以很好地训练模型

iris = pandas.read_csv("E:\scikit\sampleTestingCSVInput.csv") 
iris_header = ["Sepal_Length","Sepal_Width","Petal_Length","Petal_Width"] 

模型算法:

model = SVC(gamma='scale')
model.fit(iris.data, iris.target_names[iris.target])

但是在导入CSV文件以训练模型,还为target_names创建新数组的同时,我遇到了类似

的错误
  

ValueError:找到数量不一致的输入变量   样本:[150,4]

我的CSV文件有5列,其中输入4列,输出1列。需要为该输出列拟合模型。

如何为拟合模型提供参数?

任何人都可以共享代码示例以导入CSV文件以适合sklearn python中的SVM模型吗?

1 个答案:

答案 0 :(得分:1)

由于问题从一开始就不是很清楚,并且试图解释这个问题是徒劳的,所以我决定下载数据集并自己完成。因此,为了确保我们使用相同的数据集iris.head()可以为您提供或类似的东西,可能会更改一些名称和一些值,但是总体结构是相同的。 iris.head()

现在前四列是要素,第五列是目标/输出。

现在,您需要将X和Y作为numpy数组来使用

X = iris[ ['sepal length:','sepal Width:','petal length','petal width']].values
Y = iris[['Target']].values

现在,由于Y是分类数据,您将需要使用sklearn的LabelEncoder对它进行一次热编码,并缩放输入X来使用它

label_encoder = LabelEncoder()
Y = label_encoder.fit_transform(Y)
X = StandardScaler().fit_transform(X)

为了保持单独的训练数据和测试数据的规范,请使用

来拆分数据集
X_train , X_test, y_train, y_test = train_test_split(X,Y)

现在只需使用X_train和y_train在模型上对其进行训练

clf = SVC(C=1.0, kernel='rbf').fit(X_train,y_train)

此后,您可以使用测试数据评估模型并根据需要调整C的值。

编辑,以防万一您不知道函数在哪里是导入语句

from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder, StandardScaler