機械学習の分類プログラムが上手くいかない
- 評価
- クリップ 0
- VIEW 710
機械学習で分類を行うプログラムをアヤメの分類のプログラムを元に作りました。
以下プログラムとエラーです。何かわかりましたらよろしくお願いします。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# アヤメデータの読み込み --- (*1)
analysisresults_data = pd.read_csv("analysis_results.csv", encoding="utf-8")
# アヤメデータをラベルと入力データに分離する --- (*2)
y = analysisresults_data.loc[:,"結果"]
x = analysisresults_data.loc[:,["番号1","番号2","番号3","URL","日付"]]
# 学習用とテスト用に分離する --- (*3)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, train_size = 0.7, shuffle = True)
# 学習する --- (*4)
clf = SVC()
clf.fit(x_train, y_train)
# 評価する --- (*5)
y_pred = clf.predict(x_test)
print("正解率 = " , accuracy_score(y_test, y_pred))
Traceback (most recent call last):
File "4iris.py", line 7, in <module>
analysisresults_data = pd.read_csv("analysis_results.csv", encoding="utf-8")
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/pandas/io/parsers.py", line 702, in parser_f
return _read(filepath_or_buffer, kwds)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/pandas/io/parsers.py", line 429, in _read
parser = TextFileReader(filepath_or_buffer, kwds)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/pandas/io/parsers.py", line 895, in init
self._make_engine(self.engine)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/pandas/io/parsers.py", line 1122, in _make_engine
self._engine = CParserWrapper(self.f, self.options)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/pandas/io/parsers.py", line 1853, in init
self._reader = parsers.TextReader(src, **kwds)
File "pandas/_libs/parsers.pyx", line 542, in pandas._libs.parsers.TextReader.cinit
File "pandas/_libs/parsers.pyx", line 782, in pandas._libs.parsers.TextReader._get_header
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x94 in position 0: invalid start byte
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
can't decode byte 0x94 in position 0: invalid start byte
とあるのでCSVファイルの1桁目がUFT8で無いと言ってますね。CSVファイルがSJISになっているとか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
ファイルの中身は分かりませんが
エラー内容的に下記が参考になりそうです。
コメント欄もチェックした方が良いと思います。
https://qiita.com/niwaringo/items/d2a30e04e08da8eaa643
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
hayataka2049
2019/09/20 14:24
csvの一行目をご提示ください。
Rondon7251
2019/09/20 14:29
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# アヤメデータの読み込み --- (*1)
analysisresults_data = pd.read_csv("analysis_results.csv", encoding="utf-8")
# アヤメデータをラベルと入力データに分離する --- (*2)
y = analysisresults_data.loc[:,"Result"]
x = analysisresults_data.loc[:,["Aa","Bb","Cc","Url","Date"]]
# 学習用とテスト用に分離する --- (*3)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, train_size = 0.7, shuffle = True)
# 学習する --- (*4)
clf = SVC()
clf.fit(x_train, y_train)
# 評価する --- (*5)
y_pred = clf.predict(x_test)
print("正解率 = " , accuracy_score(y_test, y_pred))
csvの一行目
Aa Bb Cc Url Date Result
少し変更点ありますがよろしくお願いします。
hayataka2049
2019/09/20 14:39
Aa Bb Cc Url Date Result
は元のままですか? そうでなければ、元の文字列をご提示ください。
また追加になりますが、どのようにして得たCSVファイルなのかも併せて教えていただいた方が良いかもしれません。
Rondon7251
2019/09/20 14:57
csvファイルを追記しました。
このCSVファイルはデータベースサーバからscpを使ってコピーをして得たデータです。
データベースのテーブルから
select * from analysis_results where analysis_result = 1 limit 10000 INTO OUTFILE '/tmp/analysis_resultstable.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';
をして
ローカルから
scp j16040@202.26.158.105:/tmp/analysis_resultstable.csv ~/Desktop/
をして取り出しました。
Rondon7251
2019/09/20 15:20
Excelでutf-8で保存したらエラー内容が減りました。
以下のエラーが出ます何かわかりますでしょうか?
Traceback (most recent call last):
File "analysis_results.py", line 18, in <module>
clf.fit(x_train, y_train)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/sklearn/svm/base.py", line 146, in fit
accept_large_sparse=False)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/sklearn/utils/validation.py", line 719, in check_X_y
estimator=estimator)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/sklearn/utils/validation.py", line 496, in check_array
array = np.asarray(array, dtype=dtype, order=order)
File "/Users/idaryuunosuke/.pyenv/versions/anaconda3-5.3.1/envs/py35/lib/python3.5/site-packages/numpy/core/numeric.py", line 538, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: '2018/11/18 11:18'
nandymak
2019/09/20 15:28
>ValueError: could not convert string to float: '2018/11/18 11:18'
エラーの内容が最後に出てますけど。
Rondon7251
2019/09/20 15:32
調べたのですがこれは具体的にどこを直せばいいのでしょうか?
nandymak
2019/09/20 15:34
データがおかしくないですか?
Rondon7251
2019/09/20 16:20
以下エラー全て最後の文章です。
どうやらCSVファイルが読み込めてないみたいです。
何か対策があればよろしくお願いします。
ValueError: could not convert string to float: '2018/12/19 10:13'
ValueError: could not convert string to float: '2019/1/7 9:13'
ValueError: could not convert string to float: '2019/1/17 4:01'
ValueError: could not convert string to float: '2018/11/9 10:07'
nandymak
2019/09/20 16:46
日付と時間が表示されてますよね?これは読み込んだCSVファイルの内容では無いですか?
だとしたら読み込めてますよね?
ValueError=値のエラーです。簡単な英語ですよね。
Rondon7251
2019/09/20 19:51
値のエラーというのは何をしたら良いのでしょうか?
nandymak
2019/09/21 09:26
>値のエラーというのは何をしたら良いのでしょうか?
値がおかしいので値を修正する必要があります。
>could not convert string to float: '2018/11/9 10:07'
「StringからFloatに変換することが出来ません」と言う理由が表示されていますが、日付を数値(浮動小数点)に変換しようとしているようです。
アヤメをSVMで分類するのに日付は要らないのでは?と思いますし、数値に変換する処理はコードを見る限りは判りませんでした。