2016-03-29 16 views
0

Python'da makine öğrenmeyi ve scikit öğrenim paketini kullanmayı öğreniyorum. Bu amaçla R'yi zaten kullandım ve veri şeması strutunu çok kolay buldum. Scikit öğrenmek biraz zor buluyorum numpy dizi kullanır. Pitonda, R veri çerçevesine benzeyen pandalarımız var. Bu kod bu website'dan alınmıştır.Pandalarla birlikte Iris veri kümesinde SVM regresyonu nasıl kullanılır?

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]] 

Nasıl pandalar dataframe ile piton kodunun üzerinde kullanmak ve

Bu

EDITED SVM Regresyon kullanabilirsiniz ben

yaptıklarını olduğunu
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) 

Ama onun Böyle çapraz doğrulama kullanabilirsiniz

>>> 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]] 

cevap

1

bu hatayı veren:

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) 

Sana pandalar ile ne yapmak istediğinizi emin değilim, ama yüklemek istediğiniz takdirde bir pandalar dataframe için veri kümesi bunu şöyle yapabiliriz:

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']) 

doğruluğunu hesaplamak için:

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