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

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

新規登録して質問してみよう
ただいま回答率
85.48%
機械学習

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

Python

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

Q&A

2回答

470閲覧

どうやってモデルの正確さをパーセンテージであらわすのか?

morin

総合スコア57

機械学習

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

Python

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

0グッド

2クリップ

投稿2020/04/23 20:24

最上2乗法を学んだので、自分で作ったデータで試してみようと思いました。
作ったモデルの正確さを、とりあえず差分の2乗の平均で表したんですけど、これをパーセンテージで表したいです。
今『Pythonではじめる機械学習』という本を読んでるんですけど、そこではモデルの正確さをパーセンテージで出せていたので、その仕組みがどうなってるのか気になった次第です。

回答お願いします! m(__)m

%matplotlib inline import matplotlib.pyplot as plt import random from statistics import mean, stdev import numpy as np import math # 理系科目が得意な人を想定して、物理と数学のテスト結果を作成 # それぞれ、インデックスが同じものは同じ人の点数。 phy = [40, 90, 80, 50, 70, 66, 70, 90, 88, 29, 21, 33, 50, 60, 50, 80, 77, 88, 29, 34, 50, 12] ma = [50, 77, 99, 44, 88, 60, 77, 80, 99, 44, 40, 30, 90, 80, 40, 90, 70, 66, 33, 55, 45, 15] phy_mean = mean(phy) ma_mean = mean(ma) # 共分散を計算 def cov(data_score1, data_score2): data_score1_mean = mean(data_score1) data_score2_mean = mean(data_score2) store = [] for score1, score2 in zip(data_score1, data_score2): store.append((data_score1_mean - score1) * (data_score2_mean - score2)) cov = sum(store) / len(data_score1) return cov cov = cov(phy, ma) katamuki = cov / (stdev(phy) * stdev(phy)) seppen = mean(ma) - mean(phy) * (katamuki) y = [] for x in range(0, 101, 10): y.append(katamuki * x + seppen) x = np.array([i for i in range(0, 101, 10)]) fig, ax = plt.subplots() ax.scatter(phy, ma) ax.set_xlabel("physics") ax.set_ylabel("math") ax.plot(x, y) # このモデルがどれくらい正確か試してみたい。 # 新しいデータを5個つくる。 phy_new = [90, 77, 50, 10, 50] ma_new = [99, 70, 44, 15, 33] plt.scatter(phy_new, ma_new, c="red") # まずは、個々のphy_newに対して、予測された結果のphy_new_predを集める。 math_pred = [] for phy_data in phy_new: math_pred.append(round(katamuki * phy_data + seppen)) # つぎに、予測されたデータmath_predと、実際のデータであるma_newを比べてみる。 # それぞれ、差を2乗して、平均をとってみる diff = [] for new, old in zip(ma_new, math_pred): diff.append((new - old) * (new - old)) accuracy =math.sqrt(mean(diff) / len(diff)) print("accuracy: {}".format(round(accuracy, 2)))

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

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

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

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

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

guest

回答2

0

分類モデルなら正解率のような概念がありますが、回帰モデルで同じやり方は使えません。パーセンテージで出ていたものは分類モデルだったのかもしれません。

パーセンテージとはちょっと違いますが、いわゆる決定係数もだいたい0~1の値を取るので、こちらが使いやすいかもしれません(状況次第で負もあり得るのですが)。scikit-learnの回帰のscoreのデフォルトもこれです。

投稿2020/04/24 11:36

hayataka2049

総合スコア30933

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

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

morin

2020/04/24 23:45

回答ありがとうございます! scoreは決定係数というやつを使ってたんですね! また、学習を進めてから決定係数でも試してみます^^
guest

0

閉じてないようなので補足を

回帰であればRMSEや決定係数もありますが、パーセンテージならば

MAPE平均絶対誤差率 もよくつかわれます

予測値と実測値の差を実測値で割り絶対値を取る
総和をデータ数で割る
100倍して%表示となります。

もちろん最小の0%に近づくほどよい予測です

ご参考
https://mathwords.net/rmsemae

投稿2020/06/24 09:32

aokikenichi

総合スコア2218

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問