2017-04-27 1 views
0

レースの興味深いユーザーデータがあります。私はいつレースを終えようとしているのかを知っていて、いつ何が終わったのか分かっています。目標は、アスリートがいつ遅れて来るかを知ることです。私は、各運動選手のためにサポートベクターマシンを走らせ、決定境界をプロットしたいと思います。ここでpandas colのアイテムをループし、scikitモデルを実行しプロットする方法は?

は、私が何をすべきかです:

import numpy as np 
import pandas as pd 
from sklearn import svm 
from mlxtend.plotting import plot_decision_regions 
import matplotlib.pyplot as plt 


# Create arbitrary dataset for example 
df = pd.DataFrame({'User': np.random.random_integers(low=1, high=4, size=50), 
        'Planned_End': np.random.uniform(low=-5, high=5, size=50), 
        'Actual_End': np.random.uniform(low=-1, high=1, size=50), 
        'Late':  np.random.random_integers(low=0, high=2, size=50)} 
) 

# Fit Support Vector Machine Classifier 
X = df[['Planned_End', 'Actual_End']] 
y = df['Late'] 

clf = svm.SVC(decision_function_shape='ovo') 

for i, y in df['User']: 
    clf.fit(X, y) 
    ax = plt.subplot() 
    fig = plot_decision_regions(X=X, y=y, clf=clf, legend=2) 
    plt.title(lab) 
plt.show() 

私は次のエラーを取得する:TypeError: 'numpy.int64' object is not iterable - つまり、私は何とか列をループすることはできません。

私はそれがnumpyのデータ形式になると思いますか?それをどうすれば解決できますか?

答えて

1

だけ使用できるようにあなたのUserシリーズはnumpy.int64オブジェクトが含まれています。

for y in df['User']: 

をそして、あなたはどこでもiを使用しないでください。コードの残りの部分については

、これはいくつかの解を生成、それに応じて編集してください:

import numpy as np 
import pandas as pd 
from sklearn import svm 
from mlxtend.plotting import plot_decision_regions 
import matplotlib.pyplot as plt 


# Create arbitrary dataset for example 
df = pd.DataFrame({'User': np.random.random_integers(low=1, high=4, size=50), 
        'Planned_End': np.random.uniform(low=-5, high=5, size=50), 
        'Actual_End': np.random.uniform(low=-1, high=1, size=50), 
        'Late':  np.random.random_integers(low=0, high=2, size=50)} 
) 

# Fit Support Vector Machine Classifier 
X = df[['Planned_End', 'Actual_End']].as_matrix() 
y = df['Late'] 

clf = svm.SVC(decision_function_shape='ovo') 


y = df['User'].values 
clf.fit(X, y) 
ax = plt.subplot() 
fig = plot_decision_regions(X=X, y=y, clf=clf, legend=2) 
plt.title('lab') 
plt.show() 
+0

ありがとうございます!私はちょっとしたテクノロジースタックから来て、私が知っている構文を単純に使用して、それを試しました - 明らかに成功していません。私は最初に 'y'と' i'を使ってかなり間違っていたと思う。私はちょうど 'numpy.int64'で、選手ごとにclfを走らせるアスリートを回りたいです。私は何とかそれを取り除くことはできません。それ以上のヒント? – Rachel

+1

希望は私の編集に役立ちます。 – zipa

+0

ありがとうございます - それはすでにかなり役に立ちます。しかし、私は実際に個々の選手ごとにプロットを作成しようとしています。つまり、私は 'df ['Athelte']'をループし、各アスリート(この場合は4人)に 'clf()'と 'plt.subplot()を実行しようとしています。依存変数はまだ 'df ['Late']'、つまり 'y'であると考えられます。 – Rachel

2

トライiteritems()

for i, y in df['User'].iteritems(): 
+0

ありがとうございました!私は今までそれを得ていません。私はあなたのメソッドと 'のために私はdf [Responsible User ']にしようとしました。itterows():'返された' Series 'オブジェクトには属性' itterows''がありません – Rachel

+0

申し訳ありません、私の間違いは、iteritemsを試してください –

+0

ありがとう!私はそこに着いていると思う。データフレームを最初に 'np.array'に変換する必要があると思いますか? 「yは1D NumPy配列でなければならない」というエラーが表示されます。 – Rachel

関連する問題