散點圖
散點圖也叫 X-Y 圖,它將所有的資料以點的形式展現在直角坐標系上,以顯示變數之間的相互影響程度,點的位置由變數的數值決定,
通過觀察散點圖上資料點的分布情況,我們可以推斷出變數間的相關性,如果變數之間不存在相互關系,那么在散點圖上就會表現為隨機分布的離散的點,如果存在某種相關性,那么大部分的資料點就會相對密集并以某種趨勢呈現,資料的相關關系主要分為:正相關(兩個變數值同時增長)、負相關(一個變數值增加另一個變數值下降)、不相關、線性相關、指數相關等,表現在散點圖上的大致分布如下圖所示,那些離點集群較遠的點我們稱為離群點或者例外點,
示例圖如下:
繪制散點圖:
散點圖的繪制,使用的是plt.scatter方法,這個方法有以下引數:
x,y:分別是x軸和y軸的資料集,兩者的資料長度必須一致,s:點的尺寸,如果是一個具體的數字,那么散點圖的所有點都是一樣大小,如果是一個序列,那么這個序列的長度應該和x軸資料量一致,序列中的每個元素代表每個點的尺寸,c:點的顏色,可以為具體的顏色,也可以為一個序列或者是一個cmap物件,marker:標記點,默認是圓點,也可以換成其他的,- 其他引數:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html#matplotlib.pyplot.scatter,
比如有一組運動員身高和體重以及年齡的資料,那么可以通過以下代碼來繪制散點圖:
male_athletes = athletes[athletes['Sex'] == 'M'] female_athletes = athletes[athletes['Sex'] == 'F'] male_mean_height = male_athletes['Height'].mean() female_mean_height = female_athletes['Height'].mean() male_mean_weight = male_athletes['Weight'].mean() female_mean_weight = female_athletes['Weight'].mean() plt.figure(figsize=(10,5)) plt.scatter(male_athletes['Height'],male_athletes['Weight'],s=male_athletes['Age'],marker='^',color='g',label='男性',alpha=0.5) plt.scatter(female_athletes['Height'],female_athletes['Weight'],color='r',alpha=0.5,s=female_athletes['Age'],label='女性') plt.axvline(male_mean_height,color="g",linewidth=1) plt.axhline(male_mean_weight,color="g",linewidth=1) plt.axvline(female_mean_height,color="r",linewidth=1) plt.axhline(female_mean_weight,color="r",linewidth=1) plt.xticks(np.arange(140,220,5)) plt.yticks(np.arange(30,150,10)) plt.legend(prop=font) plt.xlabel("身高(cm)",fontproperties=font) plt.ylabel("體重(kg)",fontproperties=font) plt.title("運動員身高和體重散點圖",fontproperties=font) plt.grid() plt.show()
效果圖如下:
繪制回歸曲線:
有一組資料后,我們可以對這組資料進行回歸分析,回歸分析可以幫助我們了解這組資料的大體走向,回歸分析按照涉及的變數的多少,分為一元回歸和多元回歸分析;按照自變數的多少,可分為簡單回歸分析和多重回歸分析;按照自變數和因變數之間的關系型別,可分為線性回歸分析和非線性回歸分析,如果在回歸分析中,只包括一個自變數和一個因變數,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析,如果回歸分析中包括兩個或兩個以上的自變數,且自變數之間存在線性相關,則稱為多重線性回歸分析,
通過以上運動員散點圖的分析,我們總體上可以看出來是滿足線性回歸的,因此可以在圖上繪制一個線性回歸的線條,想要繪制線性回歸的線條,需要先按照之前的資料計算出線性方程,假如x是自變數,y是因變數,那么線性回歸的方程可以用以下幾個來表示:
y = 截距+斜率*x+誤差
只要把這個方程計算出來了,那么后續我們就可以根據x的值,大概的估計出y的取值范圍,也就是預測,如果我們針對以上運動員的身高和體重的關系,只要有身高,那么就可以大概的估計出體重的值,回歸方程的繪制我們需要借助scikit-learn庫,這個庫是專門做機器學習用的,我們需要使用里面的線性回歸類sklearn.liear_regression.LinearRegression,
示例代碼如下:
from sklearn.linear_model import LinearRegression male_athletes = athletes[athletes['Sex'] == 'M'].dropna() female_athletes = athletes[athletes['Sex'] == 'F'].dropna() xtrain = male_athletes['Height'] ytrain = male_athletes['Weight'] # 生成線性回歸物件 model = LinearRegression() # 喂訓練資料進去,但是需要把因變數轉換成1列多行的資料 model.fit(xtrain[:,np.newaxis],ytrain) # 列印斜率 print(model.coef_) # 列印截距 print(model.intercept_) line_xticks = xtrain # 根據回歸方程計算出的y軸坐標 line_yticks = model.predict(xtrain[:,np.newaxis])
效果圖如下:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/276908.html
標籤:Python
上一篇:如何檢查串列是否為空?
