線性迴歸---示例預測電壓和電流

下面是一個線性迴歸的示例,預測了電壓和電流的關係。

from sklearn.model_selection import train_test_split # 數據劃分的類:將數據分爲測試集合訓練集。
import numpy as np
import matplotlib as mpl    #畫圖工具
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame
import time
## 設置字符集,防止中文亂碼
mpl.rcParams['font.sans-serif']=[u'simHei']
mpl.rcParams['axes.unicode_minus']=False
# 加載數據
# 日期、時間、有功功率、無功功率、電壓、電流、廚房用電功率、洗衣服用電功率、熱水器用電功率
path1='H:\household_power_consumption_1000.txt'  #加載1000條數據。
df = pd.read_csv(path1, sep=';', low_memory=False)#沒有混合類型的時候可以通過low_memory=F調用更多內存,加快效率)
#sep分隔符
df.head(2)
## 功率和電流之間的關係f
X = df.iloc[:,2:4]
Y2 = df.iloc[:,5]
## 數據分割
X2_train,X2_test,Y2_train,Y2_test = train_test_split(X, Y2, test_size=0.2, random_state=0)
type(X2_train)
#X和Y轉換成矩陣
X=np.mat(X2_train)
Y=np.mat(Y2_train).reshape(-1,1)
type(X)
theta=(X.T * X).I*X.T*Y   #輸出theta
print(theta)
#對測試集合進行測試
y_hat = np.mat(X2_test) * theta
t=np.arange(len(X2_test))
plt.figure(facecolor='w')
plt.plot(t, Y2_test, 'r-', linewidth=2, label=u'真實值')
plt.plot(t, y_hat, 'g-', linewidth=2, label=u'預測值')
plt.legend(loc = 'lower right')
plt.title(u"線性迴歸預測功率與電流之間的關係", fontsize=20)
plt.grid(b=True)
plt.show()

在這裏插入圖片描述
最後輸出真實值和預測值之間的關係

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章