ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

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