マシンポータル学習(II)、単純な線形回帰アルゴリズム

ここでは、まず、次の式を見てみましょう。
ここに画像を挿入説明

私たちは、この式は、我々は統計に接触高校の数学には見知らぬ人ではありません見ると信じて、私たちは多くの場合、予測値を算出するために上記の式を使用し、上記の方法は、最小二乗法、単純な線形回帰と呼ばれています。

これを行うには、戻って、特別な高校の数学を見直します。最小二乗法は、実際には、このラインとの最短距離に私たちのトレーニングデータセットを作り、直線を見つけることです。参考特定の式が導出される:最小二乗

上記式で、我々は、式、APIの形態Aバイナリ線形回帰アルゴリズムによってカプセル化することができます

import numpy as np

class SimpleLinearRegression1:
	def __init__(self):

 	self.a_ = None
        self.b_ = None	
        
	def fit(self, x_train, y_train):
	assert x_train.ndim == 1,\
   	  "Simple LinearRegressor can only solve single feature training data"
	assert len(x_train) == len(y_train), \
  	  "the size of x_train must be equal to the size of y_train"
  	  
	x_mean = np.mean(x_train)
	y_mean = np.mean(y_train)
	
	num = (x_train - x_mean).dot(y_train - y_mean)
	d = (x_train - x_mean).dot(x_train - x_mean)

	self.a_ = num / d
	self.b_ = y_mean - self.a_ * x_mean
	return self
	def predict(self, x_predict):
   	 assert x_predict.ndim == 1, \
       	   "Simple Linear regressor can only solve single feature training data"
   	 assert self.a_ is not None and self.b_ is not None, \
       	   "must fit before predict!"
       	   return np.array([self._predict(x) for x in x_predict])

	def _predict(self, x_single):
    	return self.a_ * x_single + self.b

	def __repr__(self):
    	return"SimpleLinearRegression1()"_

私たち自身の線形回帰アルゴリズムパッケージ良い、我々はバイナリを予測するための線形特性データを持つことができます。テストデータは、私たちはしばしば私たちの予測の予測効果を評価するためにいくつかの指標を使用する場合:

MAE(平均絶対誤差)
ここに画像を挿入説明
和MAEはテストデータ値の差という予測の実際の値であっても、平均値の絶対値を参照することは容易です。当社は、予測された結果とのずれの大きさの実際の結果を計算することができます。

MSE(平均二乗誤差)

ここに画像を挿入説明
実際の絶対値の二乗平均の平均二乗誤差は、差分値とテストデータ合計の予測値です。

R ^ 2(決意の係数)(最良の結果)
ここに画像を挿入説明
以下の推定により推定、R ^ 2(1-MAEは/ var(分散))のように表すことができる
ここに画像を挿入説明
私は教育ビデオを見る、ボストン(予測データレートとして採用しました我々はまた)気持ちの良いの話、私は教育ビデオを参照してください、次のWebサイトを訪問することができます

機械学習のPythonアプリケーション

コード表示

import matplotlib.pyplot as plt
from sklearn import *
from Simple_LR_class import SimpleLinearRegression1

boston = datasets.load_boston()
x = boston.data[:, 5]
y = boston.target
x = x[y < 50.0]
y = y[y < 50.0]

x_train, x_test, y_train, y_test = model_selection.train_test_split(x, y)
lr_clf = SimpleLinearRegression1()
lr_clf.fit(x_train, y_train)
y_predict = lr_clf.predict(x_test)

plt.scatter(x_train, y_train)
plt.plot(x_train, lr_clf.predict(x_train), color='r')
plt.plot(x_test, lr_clf.predict(x_test), color='g')
MAE = metrics.mean_absolute_error(y_test, y_predict)
MSE = metrics.mean_squared_error(y_test, y_predict)
R_square = metrics.r2_score(y_test, y_predict)
print(MSE)
print(MAE)
print(R_square)
plt.show()
私たちは、直線と予測された結果をフィッティングの効果を見ることができます:

ここに画像を挿入説明
ここに画像を挿入説明
読者はそれが私の公共のを見ることができるように、参考にしたい、私は上記の中で作られたノートを勉強します、私たちは一緒に学ぶことができるようになります!

ここに画像を挿入説明
Altキー

公開された19元の記事 ウォン称賛12 ビュー6106

おすすめ

転載: blog.csdn.net/Rosen_er/article/details/104310821