機器學習之pandas庫 小專案實戰

2021-09-25 23:09:12 字數 3910 閱讀 9025

自行車共享系統是新一代的傳統自行車租賃,其中會員,租賃和退貨的整個過程已經自動化。通過這些系統,使用者能夠從特定位置輕鬆地租用自行車並在另乙個位置返回。目前,全世界約有500多個自行車共享計畫,其中包括超過50萬輛自行車。今天,由於它們在交通,環境和健康問題中的重要作用,因此對這些系統存在很大興趣。

除了有趣的自行車共享系統的現實應用之外,這些系統產生的資料特徵使它們對研究具有吸引力。與公共汽車或地鐵等其他交通服務相反,旅行,出發和到達位置的持續時間明確記錄在這些系統中。此功能將自行車共享系統轉變為虛擬感測器網路,可用於感知城市的移動性。因此,預計通過監測這些資料可以檢測到城市中的大多數重要事件。

屬性資訊:

hour.csv和day.csv都有以下字段,除了在day.csv中不可用的hr

import pandas as pd                                         #pandas庫

from sklearn.preprocessing import onehotencoder #獨熱編碼

from sklearn.preprocessing import polynomialfeatures #多項式擴充套件

from sklearn.preprocessing import standardscaler #特徵縮放

(標準化)

from sklearn.model_selection import train_test_split #資料集切分

from sklearn.linear_model import linearregression #線性回歸

from sklearn.linear_model import ridge #嶺回歸

from sklearn.metrics import mean_absolute_error #平均絕對誤差

# 讀取資料

path =

"../../datas/hour.csv"

data = pd.

read_csv

(path)

## 刪除無用的列

data.

drop

(columns=

['instant'

,'dteday'

,'casual'

,'registered'

],inplace=true)

# print

(data)

## 檢查哪些特徵需要做獨熱編碼

# for i in data.columns:

# print

(data[i]

.value_counts()

)## 獨熱編碼,對需要進行獨熱編碼的列編碼

hotcoder =

onehotencoder

(sparse=false,handle_unknown=

'ignore'

)hot = hotcoder.

fit_transform

(data[

['season'

,'mnth'

,'hr'

,'weekday'

,'weathersit']]

)hot = pd.

dataframe

(hot)

# print

(hot)

## 刪除掉獨熱編碼的列

data.

drop

(columns=

['season'

,'mnth'

,'hr'

,'weekday'

,'weathersit'

],inplace=true)

print

(data)

## 多項式擴充套件

polycoder =

polynomialfeatures

(degree=

3,interaction_only=false)

pcoder = polycoder.

fit_transform

(data[

['temp'

,'atemp'

,'hum'

,'windspeed']]

)pcoder = pd.

dataframe

(pcoder,columns=polycoder.

get_feature_names()

)print

(pcoder)

## 標準化

sscoder =

standardscaler()

scoder = sscoder.

fit_transform

(pcoder)

scoder = pd.

dataframe

(scoder,columns=pf.

get_feature_names()

)print

(scoder)

## 刪除掉標準化的列

data.

drop

(columns=

['temp'

,'atemp'

,'hum'

,'windspeed'

],inplace=true)

# print

(data)

## 合併

data = pd.

concat

([hot,scoder,data]

,axis=1)

print

(data)

## 構建x和y

x = data.iloc[:,

:-1]

y = data.iloc[:,

-1]## 劃分訓練集和測試集

train_x,test_x,train_y,test_y =

train_test_split

(x,y,test_size=

0.33

,random_state=7)

## 訓練linearregression模型

lr =

linearregression()

lr.fit

(train_x,train_y)

print

(lr.

score

(test_x,test_y)

)hietory =

mean_absolute_error

(y_pred=lr.

predict

(test_x)

,y_true=test_y)

print

(hietory)

## 訓練ridge

ridge =

ridge

(alpha=

0.7,fit_intercept=true,max_iter=

200,solver=

'auto'

)ridge.

fit(train_x,train_y)

print

(ridge.

score

(test_x,test_y)

)hietory1 =

mean_absolute_error

(y_pred=ridge.

predict

(test_x)

,y_true=test_y)

print

(hietory1)

效果如下

0.7032993956224423

74.06016823570432

0.7032488512553888

74.06116966254734

機器學習之pandas庫 小專案實戰

global active power global reactive power global intensity b 1 5.360 0.436 23.0 1.0 2 5.374 0.498 23.0 1.0 3 5.388 0.502 23.0 1.0 4 3.666 0.528 15.8 1...

機器學習之pandas

import pandas as pd a pd.read csv 檔案路徑 讀取檔案 a.head 顯示的條數 顯示前部分資料 a.tail 顯示的條數 顯示後部分資料 a.columns 輸出列 a.loc 序列號 輸出乙個樣本 a.columns.tolist 將列轉換成列表 c.endwit...

機器學習 pandas庫使用

關於pandas庫中dataframe的使用,dataframe表示的是乙個有序的 dataframe有自己的行索引和列索引,這與series不同,series只有列索引,dataframe每一列,每一行都可以是不同的資料型別,接下來讓我們來看一下dataframe的使用 import pandas...