実現したいこと
プログラムを動作させ、正答率を算出する
前提
発生している問題・エラーメッセージ
'DataFrame' object has no attribute 'target'
該当のソースコード
import pandas as pd import seaborn as sns df= sns.load_dataset('penguins') from sklearn import datasets,model_selection,svm,metrics from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score df= sns.load_dataset('penguins') df['species']=df.target x,y=df.data,df.target x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=1) model=svm.SVC() model.fit(x_train,y_train) pred=model.predict(x_test) print(accuracy_score(y_test,pred)) print(model.predict([[39.1,18.7,181,3750]]))
試したこと
データセットの読み込みに不備があるのかと思い試行錯誤しましたがうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
df= sns.load_dataset('penguins')
でよみこんだdfの内容
どのような列があるか、列のうちどれがtargetあるいはdataか
は理解、把握されていますか?
Python2.7でなければならないのでしょうか?
> df= sns.load_dataset('penguins')
のすぐ下に
dir(df)
を追加して実行したら、たとえば「df.info()」のように「df.」に付けられるものの一覧が表示されますが、そこから探しても「data」と「target」はありませんから、
> df['species']=df.target
で
> 'DataFrame' object has no attribute 'target'
となりますし、
> x,y=df.data,df.target
の「df.data」も同様です
質問のコードで(存在してない)「df.data」と「df.target」を使おうとしてるのは、何かを参考にしたのでしょうか?
【追記】
たとえば
df['species']=df.target
x,y=df.data,df.target
↓ 変更
x = df[['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g']]
y = df['species']
のように「df.data」と「df.target」を使わないようにして、さらにデータ中の「NaN」の対策をしたら、たぶんエラーは出なくなると思います
NaN の対策とはどうしたら良いのでしょうか??
「データ欠損のチェックと対処」については教わっているかと思いますが,例えば下記のように処理すればエラーはなくなるはずです。頑張って下さい。
if True in df.isna().any().values:
df = df.dropna()
> NaN の対策とはどうしたら良いのでしょうか??
まずは自分で調べましょう
データの前処理に付いて解説してるネットの記事や書籍はたくさんあります

回答1件
あなたの回答
tips
プレビュー