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

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

新規登録して質問してみよう
ただいま回答率
85.50%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

701閲覧

scikit-learnの線形回帰で、各特徴量に対する係数を表示したい

jojaku

総合スコア4

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/02/15 09:31

編集2021/02/16 05:43

機械学習を独学で学んでいます。
練習としてscikit-learnの線形回帰を用いた株価の予測をしています。

列名内容
Data日付(Index)
Open始値、当日の最初に付いた値段
High高値、当日のもっとも高かった値段
Low安値、当日のもっとも安かった値段
Close終値、当日の最後に付いた値段
Volume取引量

上記の説明変数を使って、翌日のHigh(高値)をNext_Highとして予測することをしています。
各特徴量に対する係数を表示したく
model.score(target_predict,target_test)
を実行したのですがエラーで表示されませんでした。
お力添えのほどよろしくお願いします。

Python

1%matplotlib inline 2 3import pandas as pd 4import numpy as np 5import matplotlib.pyplot as plt 6import seaborn as sns 7import pandas_datareader.data as dr 8 9# アップル社の株価を取得 10stock = dr.DataReader('AAPL', "stooq") 11stock.head() 12 13# 翌日のHigh(高値)を Next_Highとして追加 14stock['Next_High'] = stock['High'].shift(1) 15stock.head() 16 17# 欠損値の削除 18stock = stock.dropna() 19stock.shape 20 21# 検証データの用意 22data_columns = ['Open', 'High', 'Low', 'Close', 'Volume'] 23 24# 検証データ数 25test_rows = 300 26 27# stockデータを目的変数と説明変数に分ける 28target = stock['Next_High'] 29data = stock[data_columns] 30 31# 学習データと検証データに分割 32target_train = target[test_rows:] 33target_test = target[:test_rows] 34data_train = data[test_rows:] 35data_test = data[:test_rows] 36 37from sklearn.linear_model import LinearRegression 38 39# モデルの初期化 40model = LinearRegression() 41 42# 学習の実施 43model.fit(data_train, target_train) 44 45target_predict = model.predict(data_test) 46 47# 検証データの目的変数でDataFrameを作成 48result = pd.DataFrame(target_test) 49 50# 予測結果を列「predict」としてDataFrameに追加 51result['predict'] = target_predict 52 53# グラフを描画 54sns.lineplot(data=result) 55 56# 決定係数 57model.score(target_predict,target_test)

環境はjupyter notebookです。

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

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

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

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

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

toast-uz

2021/02/15 10:41

model.score(target_predict,target_test) を実行したのですがエラーで表示されませんでした。 とありますが、そのような文はコード内に見当たりません。
jojaku

2021/02/15 12:42

すみません。コード内に記述が漏れていました。 修正しました。
guest

回答2

0

ベストアンサー

LinearRegressionのscoreは、特徴量と正解ラベルとの間で計算します。予測値と正解ラベルではありません。

よって、
model.score(target_predict,target_test)

model.score(data_test,target_test)
に修正すると、うまくいきます。

参考: sklearnのLinearRegressionのドキュメント

Examplesは以下のようになっており、scoreはXとyの間で計算されています。

Python

1>>> import numpy as np 2>>> from sklearn.linear_model import LinearRegression 3>>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) 4>>> # y = 1 * x_0 + 2 * x_1 + 3 5>>> y = np.dot(X, np.array([1, 2])) + 3 6>>> reg = LinearRegression().fit(X, y) 7>>> reg.score(X, y) 81.0

投稿2021/02/20 02:40

toast-uz

総合スコア3266

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

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

jojaku

2021/02/22 02:26

特徴量と正解ラベルで計算するんですね。 回答ありがとうございます。
guest

0

LinearRegressionで学習(fit)を実行しますと
coef_に特徴量ごとの係数が配列で、
intercept_に切片、
が格納されますが、あなたが知りたいのはこの値でしょうか?
イメージ説明

投稿2021/02/15 22:23

technocore

総合スコア7200

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

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

jojaku

2021/02/16 00:40

説明不足で申し訳ありません。 私が知りたいのは決定係数になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問