gpt4 book ai didi

python - 如何使用 Pandas 在 Iris 数据集中使用 SVM 回归

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:09 24 4
gpt4 key购买 nike

我正在使用 python 学习机器学习并使用 scikit learn 包。我已经将 R 用于此目的,并发现它的数据帧结构非常简单。 Scikit learn 使用 numpy 数组,我觉得这有点困难。在 python 中,我们有 pandas,它类似于 R dataframe。此代码取自此website .

R

library(e1071)
library(MASS)
data(iris)

mysvm <- svm(Species ~ ., iris)
mysvm.pred <- predict(mysvm, iris)
table(mysvm.pred,iris$Species)
# mysvm.pred setosa versicolor virginica
# setosa 50 0 0
# versicolor 0 48 2
# virginica 0 2 48

Python

from sklearn import svm, datasets
from sklearn.metrics import confusion_matrix
iris = datasets.load_iris()

mysvm = svm.SVC().fit(iris.data, iris.target)
mysvm_pred = mysvm.predict(iris.data)
print confusion_matrix(mysvm_pred, iris.target)
# [[50 0 0]
# [ 0 48 2]
# [ 0 0 50]]

我如何将上面的Python代码与pandas dataframe一起使用并使用SVM回归

已编辑

这就是我所做的

from sklearn import svm, datasets
from sklearn.metrics import confusion_matrix
import pandas as pd
iris = datasets.load_iris()
X=pd.DataFrame(iris.data,columns=iris.feature_names)
y=pd.DataFrame(iris.target)
X.head()
y.head()
mysvm = svm.SVC().fit(X,y )
mysvm_pred = mysvm.predict(X)
print confusion_matrix(mysvm_pred, y)

但是它给出了这个错误

>>> mysvm = svm.SVC().fit(X,y )
/usr/local/lib/python2.7/dist-packages/sklearn/svm/base.py:514: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
y_ = column_or_1d(y, warn=True)
>>> mysvm_pred = mysvm.predict(X)
>>> print confusion_matrix(mysvm_pred, y)
/usr/local/lib/python2.7/dist-packages/numpy/core/fromnumeric.py:2645: VisibleDeprecationWarning: `rank` is deprecated; use the `ndim` attribute or function instead. To find the rank of a matrix see `numpy.linalg.matrix_rank`.
VisibleDeprecationWarning)
[[50 0 0]
[ 0 48 0]
[ 0 2 50]]

最佳答案

您可以像这样使用交叉验证:

from sklearn import svm, datasets, cross_validation
from sklearn import metrics
import pandas as pd

clf = svm.SVC()
cv_scores = cross_validation.cross_val_score(clf,iris.data,iris.target,cv=10)
cv_preds = cross_validation.cross_val_predict(clf,iris.data,iris.target,cv =10)

我不确定你想用 pandas 做什么,但是如果你想将数据集加载到 pandas 数据框中,你可以这样做:

clf.fit(iris.data,iris.target)
preds = clf.predict(iris.data)

df = pd.DataFrame(iris.data)
df['target'] = iris.target
df['preds'] = preds

print(df)
print confusion_matrix(df['target'],df['preds'])

计算准确性:

accuracy = metrics.accuracy_score(iris.target, preds)
print(accuracy)

关于python - 如何使用 Pandas 在 Iris 数据集中使用 SVM 回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36276771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com