python與機器學習入門(4)多元線性回歸

一個唯一的因變數和多個自變數 之間的關係

這裡自變數在處理之前不僅僅是數值型

上圖:

我們要做的也就是,尋找到最佳的b0、b1、…….bn

這裡有關於50個公司的數據

spend1、2、3代表了公司在某三個方面的花銷,state是公司的的地址,profit則是公司去年的收入。現在要選擇目標公司,要求績效最好,也就是利用前四列的數據預測profit。

但是我們發現,y=b0+b1*x1+b2*x2+b3*x3+b4*h 當中的h一定是個數值的,就是state不同引起h的不同,將state分成三列,每一列對應一個地址,將這三列的數據轉化成虛擬變數

就是說beijing是0時,上海便是1,hangzhou我們是完全可以忽略的,因為兩列數據確定數值以後,對應的第三列的數據便知道了

最終呢,我們只是將這個一列包含三種地址的數據,轉換成了兩列,每一列只有0或1的數據


到上一部的數據處理 加上測試集與測試集的操作

dataset = pd.read_csv(COM.csv)X = dataset.iloc[:, :-1].values y = dataset.iloc[:, 4].valueslabelencoder_X = LabelEncoder()X[:, 3] = labelencoder_X.fit_transform(X[:, 3])onehotencoder = OneHotEncoder(categorical_features = [3])X = onehotencoder.fit_transform(X).toarray()float_formatter= lambda X:"%.2f" % Xnp.set_printoptions(formatter={float_kind:float_formatter})X = X[:, 1:] #刪除第0列X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)


擬合回歸器

regressor = LinearRegression() #回歸器的對象regressor.fit(X_train, y_train) #擬合# Predicting the Test set resultsy_pred = regressor.predict(X_test) #包含了的預測結果的向量

這一部分與簡單線性回歸的道理是一樣的,可參考:簡單線性回歸


反向淘汰,選擇重要的指標和可以剔除的指標

先加上b0的對應的自變數,也就是該列全部都是1

X_train = np.append(arr = np.ones((40, 1)).astype(int), values = X_train, axis = 1)


反向傳播一般分五個步驟

  1. 選取顯著性指標 一般為0.05、每一列的p值大於指標的時候,可以認為是能夠刪除的,反之則認為對目標值的影響是不可以忽略的
  2. 輸入所有的訓練進行擬合
  3. 選出p值最大的那一列
  4. 如果第三步的p值大於顯著性指標,則刪除這一列
  5. 對剩餘的訓訓練值重複第三步,直到p值小於顯著性指標

Ximo = X_trainregressor_OLS = sm.OLS(endog = y_train, exog = Ximo).fit()#endog 因變數 exog 自變數print(regressor_OLS.summary())


第一次的summary結果顯示,X2的p值最大,而且大於顯著性指標

按照這個步驟一次進行判斷……….

源碼與數據集的下載請移步:

機器學習(4)-多元線性回歸 - CSDN博客?

blog.csdn.net圖標
推薦閱讀:

如何利用手機遠程調參
從零開始實現KNN分類演算法
深入機器學習系列4-KMeans
Accuracy,Precision, Recall, F-score,以及ROC曲線的總結

TAG:機器學習 | Python | 數據分析 |