Python scikit-learn 做線性回歸的示例代碼
一、概述
機器學(xué)習(xí)算法在近幾年大數(shù)據(jù)點燃的熱火熏陶下已經(jīng)變得被人所“熟知”,就算不懂得其中各算法理論,叫你喊上一兩個著名算法的名字,你也能昂首挺胸脫口而出。當(dāng)然了,算法之林雖大,但能者還是有限,能適應(yīng)某些環(huán)境并取得較好效果的算法會脫穎而出,而表現(xiàn)平平者則被歷史所淡忘。隨著機器學(xué)習(xí)社區(qū)的發(fā)展和實踐驗證,這群脫穎而出者也逐漸被人所認(rèn)可和青睞,同時獲得了更多社區(qū)力量的支持、改進和推廣。
以最廣泛的分類算法為例,大致可以分為線性和非線性兩大派別。線性算法有著名的邏輯回歸、樸素貝葉斯、最大熵等,非線性算法有隨機森林、決策樹、神經(jīng)網(wǎng)絡(luò)、核機器等等。線性算法舉的大旗是訓(xùn)練和預(yù)測的效率比較高,但最終效果對特征的依賴程度較高,需要數(shù)據(jù)在特征層面上是線性可分的。因此,使用線性算法需要在特征工程上下不少功夫,盡量對特征進行選擇、變換或者組合等使得特征具有區(qū)分性。而非線性算法則牛逼點,可以建模復(fù)雜的分類面,從而能更好的擬合數(shù)據(jù)。
那在我們選擇了特征的基礎(chǔ)上,哪個機器學(xué)習(xí)算法能取得更好的效果呢?誰也不知道。實踐是檢驗?zāi)膫€好的不二標(biāo)準(zhǔn)。那難道要苦逼到寫五六個機器學(xué)習(xí)的代碼嗎?No,機器學(xué)習(xí)社區(qū)的力量是強大的,碼農(nóng)界的共識是不重復(fù)造輪子!因此,對某些較為成熟的算法,總有某些優(yōu)秀的庫可以直接使用,省去了大伙調(diào)研的大部分時間。
基于目前使用python較多,而python界中遠(yuǎn)近聞名的機器學(xué)習(xí)庫要數(shù)scikit-learn莫屬了。這個庫優(yōu)點很多。簡單易用,接口抽象得非常好,而且文檔支持實在感人。本文中,我們可以封裝其中的很多機器學(xué)習(xí)算法,然后進行一次性測試,從而便于分析取優(yōu)。當(dāng)然了,針對具體算法,超參調(diào)優(yōu)也非常重要。
二、Scikit-learn的python實踐
本篇文章利用線性回歸算法預(yù)測波士頓的房價。波士頓房價數(shù)據(jù)集包含波士頓郊區(qū)住房價值的信息。
第一步:Python庫導(dǎo)入
%matplotlib inline import numpy as np import pandas as pd import matplotlib.pyplot as plt import sklearn
第二步:數(shù)據(jù)獲取和理解
波士頓數(shù)據(jù)集是scikit-learn的內(nèi)置數(shù)據(jù)集,可以直接拿來使用。
from sklearn.datasets import load_boston boston = load_boston()
print(boston.keys())
dict_keys([‘data', ‘target', ‘feature_names', ‘DESCR'])
print(boston.data.shape)
(506, 13)
print(boston.feature_names)
[‘CRIM' ‘ZN' ‘INDUS' ‘CHAS' ‘NOX' ‘RM' ‘AGE' ‘DIS' ‘RAD' ‘TAX' ‘PTRATIO''B' ‘LSTAT']
結(jié)論:波士頓數(shù)據(jù)集506個樣本,14個特征。
print(boston.DESCR)
bos = pd.DataFrame(boston.data) print(bos.head())
0 1 2 3 4 5 6 7 8 9 10 \
0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3
1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8
2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8
3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7
4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7
11 12
0 396.90 4.98
1 396.90 9.14
2 392.83 4.03
3 394.63 2.94
4 396.90 5.33
bos.columns = boston.feature_names print(bos.head())
print(boston.target[:5])
bos['PRICE'] = boston.target
bos.head()
第三步:數(shù)據(jù)模型構(gòu)建——線性回歸
from sklearn.linear_model import LinearRegression
X = bos.drop('PRICE', axis=1)
lm = LinearRegression()
lm
lm.fit(X, bos.PRICE)
print('線性回歸算法w值:', lm.coef_)
print('線性回歸算法b值: ', lm.intercept_)
import matplotlib.font_manager as fm myfont = fm.FontProperties(fname='C:/Windows/Fonts/msyh.ttc') plt.scatter(bos.RM, bos.PRICE) plt.xlabel(u'住宅平均房間數(shù)', fontproperties=myfont) plt.ylabel(u'房屋價格', fontproperties=myfont) plt.title(u'RM與PRICE的關(guān)系', fontproperties=myfont) plt.show()

第四步:數(shù)據(jù)模型應(yīng)用——預(yù)測房價
lm.predict(X)[0:5]
array([ 30.00821269, 25.0298606 , 30.5702317 , 28.60814055, 27.94288232])
mse = np.mean((bos.PRICE - lm.predict(X)) ** 2) print(mse)
21.897779217687486
總結(jié)
1 使用.DESCR探索波士頓數(shù)據(jù)集,業(yè)務(wù)目標(biāo)是預(yù)測波士頓郊區(qū)住房的房價;
2 使用scikit-learn針對整個數(shù)據(jù)集擬合線性回歸模型,并計算均方誤差。
思考環(huán)節(jié)
1 對數(shù)據(jù)集分割成訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集
2 訓(xùn)練數(shù)據(jù)集訓(xùn)練線性回歸模型,利用線性回歸模型對測試數(shù)據(jù)集進行預(yù)測
3 計算訓(xùn)練模型的MSE和測試數(shù)據(jù)集預(yù)測結(jié)果的MSE
4 繪制測試數(shù)據(jù)集的殘差圖
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python機器學(xué)習(xí)庫scikit-learn入門開發(fā)示例
- 使用Python和scikit-learn創(chuàng)建混淆矩陣的示例詳解
- Python機器學(xué)習(xí)工具scikit-learn的使用筆記
- Python機器學(xué)習(xí)算法庫scikit-learn學(xué)習(xí)之決策樹實現(xiàn)方法詳解
- python機器學(xué)習(xí)庫scikit-learn:SVR的基本應(yīng)用
- Python機器學(xué)習(xí)之scikit-learn庫中KNN算法的封裝與使用方法
- python的scikit-learn將特征轉(zhuǎn)成one-hot特征的方法
- Python機器學(xué)習(xí)庫scikit-learn安裝與基本使用教程
- 基于Python和Scikit-Learn的機器學(xué)習(xí)探索
- Python數(shù)據(jù)分析之使用scikit-learn構(gòu)建模型
相關(guān)文章
關(guān)于數(shù)據(jù)分析Pandas的Series用法總結(jié)
這篇文章主要介紹了關(guān)于數(shù)據(jù)分析Pandas的Series用法總結(jié),Series序列,是一種一維的結(jié)構(gòu),類似于一維列表和ndarray中的一維數(shù)組,但是功能比他們要更為強大,Series由兩部分組成:索引index和數(shù)值values,本篇對其用法做出總結(jié)2023-07-07
python編寫網(wǎng)頁爬蟲腳本并實現(xiàn)APScheduler調(diào)度
爬蟲爬的頁面是京東的電子書網(wǎng)站頁面,每天會更新一些免費的電子書,爬蟲會把每天更新的免費的書名以第一時間通過郵件發(fā)給我,通知我去下載2014-07-07
python2和python3應(yīng)該學(xué)哪個(python3.6與python3.7的選擇)
許多剛?cè)腴T Python 的朋友都在糾結(jié)的的問題是:我應(yīng)該選擇學(xué)習(xí) python2 還是 python3,Python 3.7 已經(jīng)發(fā)布了,目前Python的用戶,主要使用的版本 應(yīng)該是 Python3.6 和 Python2.7 ,那么是不是該轉(zhuǎn)到 Python 3.7 呢2019-10-10
關(guān)于Python中request發(fā)送post請求傳遞json參數(shù)的問題
這篇文章主要介紹了Python中request發(fā)送post請求傳遞json參數(shù)的問題,在Python中需要傳遞dict參數(shù),利用json.dumps將dict轉(zhuǎn)為json格式用post方法發(fā)起請求,感興趣的朋友跟隨小編一起看看吧2022-08-08
OpenCV學(xué)習(xí)之圖像形態(tài)學(xué)處理詳解
這篇文章主要為大家詳細(xì)介紹了OpenCV中圖像形態(tài)學(xué)處理的相關(guān)知識,例如:腐蝕操作、膨脹操作、開閉運算、梯度運算、Top Hat Black Hat運算等操作,需要的可以參考一下2023-02-02
使用國內(nèi)鏡像源優(yōu)化pip install下載的方法步驟
在Python開發(fā)中,pip 是一個不可或缺的工具,用于安裝和管理Python包,然而,由于默認(rèn)的PyPI服務(wù)器位于國外,國內(nèi)用戶在安裝依賴時可能會遇到下載速度慢、連接不穩(wěn)定等問題,所以本文將詳細(xì)介紹如何使用國內(nèi)鏡像源來加速pip install -r requirements.txt的過程2025-03-03
Python實現(xiàn)去除Excel重復(fù)數(shù)據(jù)并統(tǒng)計重復(fù)次數(shù)
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實現(xiàn)文本數(shù)據(jù)去重,創(chuàng)建包含唯一值的新列,并統(tǒng)計文本數(shù)據(jù)出現(xiàn)的次數(shù),需要的可以參考下2023-08-08

