最上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)))
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/24 23:45