2016-03-29 4 views
0

私はPythonで機械学習を学び、scikit学習パッケージを使用しています。私はすでにこの目的のためにRを使用しており、そのデータフレーム構造を非常に簡単に見つけることができます。 Scikit learnは、私が少し難しいと思っているような配列を使います。 Pythonでは、R dataframeに似たパンダがあります。このコードは、websiteから取られています。これは私がパンダでIrisデータセットでSVM回帰を使用する方法

を行っているものですどのように私はパンダのデータフレームでPythonコードの上に使用することができますし、SVM回帰

を使用EDITED

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

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

答えて

1

を与える:私はあなたがパンダで何をしたいのかわからない、しかし、あなたがロードしたい場合は

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) 

パンダのデータフレームへのデータセットは次のようになります。

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) 
関連する問題