前提・実現したいこと
Pythonの『pandas』を用いてデータの二値分類(2クラス分類,二項分類)を行いたいと考えています.画像のデータ(Excel)を扱っていて,「AF」を説明関数X,「Name」を目的関数Yとして分類を行っています.「AF」の説明変数がすべて数値のデータである場合については,割と簡単に分類することができましたが,画像のように説明変数が数値データとダミー変数の混在しているデータである場合,どのように解析にもっていけばいいのかわかりません.「C~F」はカテゴリ変数をダミー変数(One-Hot表現)にしてデータを作成しました.
このデータに対し,「Pandas」を用いて二値分類(決定木,SVM,線形判別分析などなんらか)を行いたいのですが,データの読み込ませ方が分かりません.
よろしくお願いします.
http://www.tsjshg.info/udemy/Lec76-79.html
上記サイトに似たような条件のロジスティック回帰の例が記載されていますが,このような方法が妥当なのでしょうか...
A B C D E F Name
50000 120 0,0,1,0,0 0,0,1 0,1,0,0 0,0,0,1 1
35000 80 0,0,1,0,0 0,0,1 0,1,0,0 0,1,0,0 0
20000 50 1,0,0,0,0 0,1,0 0,0,1,0 0,0,0,1 1
42000 65 0,0,0,0,1 0,0,1 1,0,0,0 0,0,0,1 1
51000 110 0,0,0,1,0 1,0,0 0,1,0,0 0,0,0,1 0
23000 55 1,0,0,0,0 1,0,0 0,0,0,1 1,0,0,0 1
38000 85 0,0,0,1,0 1,0,0 0,0,0,1 0,0,0,1 0
46000 95 1,0,0,0,0 0,1,0 0,0,1,0 0,1,0,0 0
4000 90 1,0,0,0,0 0,0,1 1,0,0,0 0,0,0,1 1
19000 45 0,0,0,1,0 0,0,1 0,0,1,0 0,0,0,1 0
これをコピーしてExcelの「A1~G11」にテキスト形式で張り付けたものと実データは全く一緒です.
このデータは10行のテストデータですが,
最終的には2000行あるデータで二値分類を行いたいと考えています.
発生している問題・エラーメッセージ
ValueError Traceback (most recent call last)
<ipython-input-11-bdb8fb2b37d7> in <module>
1 from sklearn.tree import DecisionTreeClassifier
2 model = DecisionTreeClassifier(max_depth=3, random_state=0)
----> 3 model.fit(X, Y)
4 model.predict(X)
~\Anaconda3\lib\site-packages\sklearn\tree\tree.py in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
799 sample_weight=sample_weight,
800 check_input=check_input,
--> 801 X_idx_sorted=X_idx_sorted)
802 return self
803
~\Anaconda3\lib\site-packages\sklearn\tree\tree.py in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
114 random_state = check_random_state(self.random_state)
115 if check_input:
--> 116 X = check_array(X, dtype=DTYPE, accept_sparse="csc")
117 y = check_array(y, ensure_2d=False, dtype=None)
118 if issparse(X):
~\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
525 try:
526 warnings.simplefilter('error', ComplexWarning)
--> 527 array = np.asarray(array, dtype=dtype, order=order)
528 except ComplexWarning:
529 raise ValueError("Complex data not supported\n"
~\Anaconda3\lib\site-packages\numpy\core\numeric.py in asarray(a, dtype, order)
536
537 """
--> 538 return array(a, dtype, copy=False, order=order)
539
540
ValueError: could not convert string to float: '0,0,1,0,0'
該当のソースコード
Python
1import pandas as pd 2 3df = pd.read_excel(r'C:\Users\AAA.xlsx') #エクセルファイルの読み込み 4df #エクセルファイルの表示 5 6df['Name'].value_counts() #「Name」列の「1」,「0」の各個数表示 7 8X = df.drop('Name', axis=1) #「Name」列以外の列を説明変数Xに設定 9Y = df['Name'] #「Name」列を目的変数Yに設定 10X.head() 11 12from sklearn.tree import DecisionTreeClassifier #機械学習ライブラリscikit-learnの中からDecisionTreeClassifier(決定木)を呼び出す 13model = DecisionTreeClassifier(max_depth=3, random_state=0) #modelという名前で決定木を使う宣言(モデルの条件として、max_depth、random_state) 14model.fit(X, Y) #教師データを先ほど宣言したモデルに代入して学習を実行し、機械学習モデルの作成 15model.predict(X) 16
from sklern~ 以下よりエラーが生じます.
試したこと
https://news.mynavi.jp/article/Python_ML-5/
上記のサイトに沿って動かしてみただけです.
説明変数が数値じゃないのでエラーが出たんだと思います.
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー