時間-日期處理 及 相關性分析

  • calender 日期包
  • datetime 日期時間處理
  1. 導入日期包 和 時間處理包
import calender
from datetime import datetime

特征工程 feature engineering

  • 數(shù)據(jù)和特征決定了機器學習的上限,而一個好的模型,只是逼近那個上限而已
  • 我們的目標是盡可能從原始數(shù)據(jù)上獲取有用的信息,一些原始數(shù)據(jù)本身往往不能直接作為模型的變量
  • 特征工程是利用數(shù)據(jù)領域的相關知識來創(chuàng)建能夠使機器學習算法達到最佳性能的特征的過程

以datetime為例,這個特征里包含了日期和時間點兩個重要信息,我們還可以進一步從日期中導出其所對應的月份和星期數(shù)

首先引入calender中的day_name,列舉了周一到周日
calendar.day_name[:]
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

字符串轉時間格式

使用datatime中的striptime函數(shù)將字符串轉換為日期時間類型
注意這里的datatime是一個包不是我們dataframe里的變量名
第二個參數(shù)是 時間日期的格式

這里我們使用"%Y-%m-%d"來指定輸入日期的格式是按照年月日排序,有時候可能會有月日年的排序形式
dateDT = datetime.strptime(dateString,"%Y-%m-%d")

使用時間日期格式的weekday方法取出日期對應的星期數(shù) 0-6

week_day = dataDT.weekday() #5

將星期映射到名字上

calender.day_name[week_day]

datetime格式還有其他的一些屬性 比如 month year 可以獲取 月份 年份

dateDT.month

繪制復習

設置畫布大小
fig = plt.figure(figsize=(18,5))
添加第一個子圖
ax1 = fig.add_subplot(121)
sns.boxplot(data=BikeData,y='count')
ax1.set(ylabel='count',title='box plot on count')

添加第二個子圖
ax2 = fig.add_subplot(122)
sns.boxplot(data=BikeData,y='count',x='hour')
ax2.set(xlabel='Hour', ylabel='Count',title="Box Plot On Count Across Hours")

相關性分析 correlation analysis

相關性分析是一種基于 不同特征相關系數(shù)的 分析,

是一種幫助我們理解特征是如何影響變量的常用方法。

相關系數(shù)的計算和可視化

相關系數(shù)是一個介于-1到1之間的一個實數(shù)

  • 符號表示正相關和負相關
  • 0 表示不相關 沒有相關性
  • 先關系數(shù)的絕對值大小決定了這種線性相關性的強弱

使用df.corr()函數(shù)計算相關性
相關系數(shù)矩陣對角線的值永遠為1,因為是特征本身與自己的相關系數(shù)
相關系數(shù)矩陣是一個對稱矩陣,我們只需要看上三角部分或者下三角部分即可
correlation = BikeData[["casual","registered","temp","atemp","humidity","windspeed","count"]].corr()

使用熱地圖顯示相關矩陣

暖色表示正相關。冷色表示負相關,大小由深淺來表示

由于對稱性,我們只需考慮圖形上半部分或者下半部分即可

其實熱地圖和上面的相關矩陣攜帶的信息是一模一樣的,只不過加上了顏色更加直觀。

#annot 注釋 表示顯示數(shù)字
#square 正方形 表示使用正方形顯示
fig = plt.figure(figsize = (10, 10))
sns.heatmap(correlation, vmax=.8, square=True, annot=True)

在散點圖中擬合簡單線性回歸

線性回歸是利用數(shù)理統(tǒng)計中回歸分析,來確定兩種或兩種以上變量間相互依賴的定量關系的一種統(tǒng)計分析方法。

擬合一條直線更好的幫助我們查看趨勢

斜率就是相關系數(shù)

我們使用seaborn中的regplot(regression plot)線性回歸函數(shù)

sns.regplot(x='tmep',y='count',data=BikeData)

將無意義的數(shù)據(jù)變成有意義的數(shù)據(jù)

map函數(shù)可以做映射,比如 把 0 映射成假期
舉個例子

使用map方法,將holiday數(shù)據(jù)做映射, 0對應'non-holiday', 1對應 'holiday'
BikeData['holiday_cat'] = BikeData['holiday'].map( {0: 'non-holiday', 1: 'holiday'} )

FacetGrid繪圖
#add_legend()表示顯示圖例
#size=3 表示長為3
#aspect=2 表示寬高比為2
#row='humidity_band'豎著畫 并且以humidity_band為分組
#map()參數(shù)表示 繪制條形圖 橫坐標是temp_band 縱坐標count 以holiday_cat分類也是圖例的依據(jù) 深色配色 不顯示置信區(qū)間
sns.FacetGrid(data = BikeData, row='humidity_band', size=3, aspect=2).\
    map(sns.barplot, 'temp_band', 'count',  'holiday_cat', palette='deep', ci=None).\
    add_legend()
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容