scikit-learnで丹次郎の血液型を推測する(未完成)
scikit-learn を付属のデータセットを使用せずに理解しようと思い立ったものの、
「名前から性別を推測する」という何の役にも立たない例しか思いつかないうえに
文字列を含むCSVを読めば
ValueError: could not convert string to float: '氏名'
無理やり読み込んだ変数を fit に渡せば
ValueError: could not convert string to float: '氏名'
解決策にたどり着くことができず…
より正しい方法があるはずですが、今のところ下記の方法が精一杯。
import numpy as np from sklearn.svm import SVC from sklearn import preprocessing from sklearn.model_selection import train_test_split # 文字列対応。np.loadtxt ではエラーになる data = np.genfromtxt('personal_infomation.csv', delimiter=',', dtype=None, encoding="utf-8_sig") # 日本語文字列を含む列は1文字ずつコードポイントに変換 # def codelist(s): return [ord(i) for i in s.ljust(10)] x = [codelist(i[0]) for i in data] y = [i[1] for i in data] # 学習の実行 clf = SVC() clf.fit(x, y) # 予測 clf.predict([codelist('竈門丹次郎')])
personal_infomation.csv は疑似個人情報データ生成サービスを利用して
氏名と血液型のみのデータを1,5000件ほど作成。
ちなみに丹次郎は B型 と予測されました。
精度検証するのを忘れていたのでやり直しorz