質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

1255閲覧

sklearnで学習したデータを使ってデータ予測をしたい

nonshi

総合スコア17

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/02/10 17:24

###sklearnで学習したデータを使ってデータ予測をしたい
sklearnで学習したデータを保存して学習したデータをもとに分類気を作りたいです。

現在、検討しているのがpickleで保存して、このソースコードとは違うものでしてほしいデータを投げたら答えを返してくれるというものです。

発生している問題

どうやって学習した分類気を保存して、それをどう使って作るかわからない。

該当のソースコード

python3

1import numpy as np 2import matplotlib.pyplot as plt 3import pickle 4 5# ファイルの読み込み 6Saxis_data = [] 7training_data_file = open("training_data_2.data", "r") 8for line in training_data_file: 9 line = line.rstrip().split(",") 10 Saxis_data.append([float(line[0]), float(line[1])]) 11training_data_file.close() 12 13 14Saxis_target = [] 15training_data_file = open("training_data_2.data", "r") 16for line in training_data_file: 17 line = line.rstrip().split(",") 18 Saxis_target.append(int(line[2])) 19training_data_file.close() 20 21 22X = np.array(Saxis_data) 23Y = np.array(Saxis_target) 24#print(X) 25#print(Y) 26 27from sklearn.svm import SVC 28model = SVC(gamma='scale') 29 30 31from sklearn.model_selection import train_test_split 32X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=3) 33 34model.fit(X_train,Y_train) 35 36 37from sklearn import metrics 38predicted = model.predict(X_test) 39expected = Y_test 40print(metrics.accuracy_score(expected,predicted)) 41

試したこと

データの保存ができたがそこからどうやって分類気を作るかわからなかった。
(今回は回答の混乱を避けるためここに関しては無視してください。)

補足情報(FW/ツールのバージョンなど)

自分が考えているものよりいいものがあればそれでも大丈夫です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

pickleを使うなら

python

1import pickle 2# ... 3 4with open("model.pkl", "wb") as f: 5 pickle.dump(model, f)

で保存して、

python

1import pickle 2# ... 3 4with open("model.pkl", "rb") as f: 5 model = pickle.load(f) 6 7# ... 8model.predict(target_data)

とかです。

投稿2019/02/10 17:43

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nonshi

2019/02/10 17:58

回答ありがとうございます。 さっそく試してみたのですが2つめのコードで NameError: name 'target_data' is not defined と出てしまいました。
nonshi

2019/02/10 18:06

ー追加ー target_dataの部分は予測してほしいデータを入れると解釈し、そこに X_test = [0.0401541,0.155155] model.predict(X_test) と自分なりにやりましたら ValueError: Expected 2D array, got 1D array instead: array=[0.0401541 0.155155 ]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample. となりました。これは変数の形がおかしいから変形しろと言っているのでしょうか?
hayataka2049

2019/02/10 18:20

predictメソッドの引数はshape=(サンプル数, ベクトル次元数)のような配列です。複数のデータに対する予測が返ります。 X_test = [[0.0401541,0.155155]] でとりあえず通ると思います。
nonshi

2019/02/10 20:32

できました! なぜこれができているか理解できていないので、ご教授もらったものも含め、勉強します。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問