#!/usr/bin/env python
# coding: utf-8
# In[8]:
#下面是數據庫的一些操作
import pandas as pd
import pymysql
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from matplotlib import pyplot as plt
db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='chuang199832', db='data', charset='utf8')
cursor = db.cursor()
cursor.execute("select version()")
data = cursor.fetchone()
print(" Database Version:%s" % data)
sql = "select * from data"
cursor.execute(sql)
data = cursor.fetchall()
df = pd.DataFrame(data)
df.columns=["Trust",'Quantity','Satisfied','Loyal']
df.head()
# In[10]:
#這一格可以忽略
xls = pd.ExcelFile('./datasets/data.xls')
print(pd.read_excel(xls))
#data = pd.read_excel(xls)
# In[11]:
#讀取數據
data = df
new_data = data.iloc[:,:4]
y = data.iloc[:,3]
print('head:',new_data.head(),'\nShape:',new_data.shape)
print('value:',y)
# In[12]:
#查看統計變量
print(new_data.describe())
# In[13]:
#三者均強相關,大於0.6就相關了
print(new_data.corr())
# In[67]:
#繪製相關性圖片,發現具有明顯的線性關係
sns.pairplot(new_data,x_vars = ['Trust','Quantity','Satisfied'],y_vars = 'Loyal',height=7, aspect=0.8,kind = 'reg')
plt.savefig('cor.jpg')
plt.show()
# In[14]:
#劃分訓練集和測試集
X_train,X_test,Y_train,Y_test = train_test_split(new_data.iloc[:,:3],new_data.Loyal,train_size=.80)
print("原始數據特徵:",new_data.iloc[:,:3].shape,
",訓練數據特徵:",X_train.shape,
",測試數據特徵:",X_test.shape)
print("原始數據標籤:",new_data.Loyal.shape,
",訓練數據標籤:",Y_train.shape,
",測試數據標籤:",Y_test.shape)
# In[15]:
#模型訓練及輸出結果
model = LinearRegression()
model.fit(X_train,Y_train)
a = model.intercept_#截距
b = model.coef_#迴歸係數
print("最佳擬合線:截距",a,",迴歸係數:",b)
# In[16]:
#R方檢測,也就是誤差檢測的一種,R越高越好
score = model.score(X_test,Y_test)
print(score)
#輸出預測值
Y_pred = model.predict(X_test)
print(Y_pred)
plt.plot(range(len(Y_pred)),Y_pred,'b',label ="predict")
# In[17]:
#下面顯示預測數據和源數據對比圖
plt.plot(range(len(Y_pred)),Y_pred,'b',label="predict")
plt.plot(range(len(Y_pred)),Y_test,'r',label="test")
plt.legend(loc="upper right") #顯示圖中的標籤
plt.xlabel("the number of Loyal")
plt.ylabel('value of Loyal')
plt.savefig("ROC.jpg")
plt.show()
# In[ ]:
示例截圖如下: