知識ポイント
- 線形回帰は、線形回帰分析のために使用することができるクラスライブラリの比較的多数を提供するためにscikit-学びます。
- また、線形回帰関数はscikit学習ではなく、これらのアルゴリズムのスクラッチ実装から始まるよりも、使用することができます。私たちは、線形回帰アルゴリズムが割り当て1.1データとそのパフォーマンスを見てプログラミングscikitは、学ぶ適用されるでしょう。
- 一般的には、限りデータとして線形の関係があることを、線形回帰クラスは、私たちの最初の選択肢です。あなたは良いフィットを見つけるか、予測、および場合は、他の線形回帰ライブラリを考えます。学習は、線形回帰の場合、このクラスの研究の最初のステップは、スタートをお勧めし始めました。
- 線形回帰の使用に非常にシンプルで、2つのステップに分けることができます。
- トレーニングセットのx、yの訓練のための利用フィット(x_train、y_train)。
- 使用すると、予測の入力x_testセットを訓練するため(x_test)得られ推定量を予測します。((X_test)は、予測データを必要とすることができる、テスト・セットであってもよいです)
プロセス
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 导入数据
path = 'D:\BaiduNetdiskDownload\data_sets\ex1data1.txt'
# pd.read_csv 将 TXT 文件读入并转化为数据框形式
# names 添加列名
# header 用指定的行来作为标题(表头),若原来无标题则设为 none
# 用到 Pandas 里面的 head( ) 函数读取数据(只能读取前五行)
data = pd.read_csv(path,header=None,names=['Population','Profit'])
data.head()
# 在训练集中插入一列1(其实是x0=1),方便我们可以使用向量化的解决方案来计算代价和梯度。
data.insert(0, 'Ones', 1)
# set X(training set), y(target variable)
# 设置训练集X,和目标变量y的值
cols = data.shape[1] # 获取列数
X = data.iloc[:,0:cols-1] # 输入向量X为前cols-1列
y = data.iloc[:,cols-1:cols] # 目标变量y为最后一列
# 代价函数是应该是 numpy 矩阵,所以我们需要转换X和Y,然后才能使用它们。 我们还需要初始化 theta 。
X = np.array(X.values)
y = np.array(y.values)
theta = np.array([0,0])
コアコード:
from sklearn import linear_model
# 需要导入LinearRegression类,并将之实例化,并采用fit()方法已验证这些训练数据。
model = linear_model.LinearRegression()
model.fit(X, y) # fit(X, y)对训练集X, y进行训练
のパフォーマンスを予測するモデルをscikitは、学びます:
x = np.array(X[:, 1])
f = model.predict(X).flatten() # .flatten() 默认按行的方向降维
fig, ax = plt.subplots(figsize=(8,5))
ax.plot(x, f, 'r', label='Prediction')
ax.scatter(data.Population, data.Profit, label='Traning Data')
ax.legend(loc=2)
ax.set_xlabel('Population')
ax.set_ylabel('Profit')
ax.set_title('Predicted Profit vs. Population Size')
plt.show()
参考資料
アルゴリズムシリーズ線形回帰線形回帰を学習python_sklearnマシン