天天看點

Python資料分析入門(十九):繪制散點圖散點圖繪制散點圖:繪制回歸曲線:

散點圖

散點圖也叫 X-Y 圖,它将所有的資料以點的形式展現在直角坐标系上,以顯示變量之間的互相影響程度,點的位置由變量的數值決定。

通過觀察散點圖上資料點的分布情況,我們可以推斷出變量間的相關性。如果變量之間不存在互相關系,那麼在散點圖上就會表現為随機分布的離散的點,如果存在某種相關性,那麼大部分的資料點就會相對密集并以某種趨勢呈現。資料的相關關系主要分為:正相關(兩個變量值同時增長)、負相關(一個變量值增加另一個變量值下降)、不相關、線性相關、指數相關等,表現在散點圖上的大緻分布如下圖所示。那些離點叢集較遠的點我們稱為離群點或者異常點。

Python資料分析入門(十九):繪制散點圖散點圖繪制散點圖:繪制回歸曲線:

示例圖如下:

Python資料分析入門(十九):繪制散點圖散點圖繪制散點圖:繪制回歸曲線:

繪制散點圖:

散點圖的繪制,使用的是

plt.scatter

方法,這個方法有以下參數:

  1. x,y

    :分别是x軸和y軸的資料集。兩者的資料長度必須一緻。
  2. s

    :點的尺寸。如果是一個具體的數字,那麼散點圖的所有點都是一樣大小,如果是一個序列,那麼這個序列的長度應該和x軸資料量一緻,序列中的每個元素代表每個點的尺寸。
  3. c

    :點的顔色。可以為具體的顔色,也可以為一個序列或者是一個

    cmap

    對象。
  4. marker

    :标記點,預設是圓點,也可以換成其他的。
  5. 其他參數:

    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()
           

效果圖如下:

Python資料分析入門(十九):繪制散點圖散點圖繪制散點圖:繪制回歸曲線:

繪制回歸曲線:

有一組資料後,我們可以對這組資料進行回歸分析,回歸分析可以幫助我們了解這組資料的大體走向。回歸分析按照涉及的變量的多少,分為一進制回歸和多元回歸分析;按照自變量的多少,可分為簡單回歸分析和多重回歸分析;按照自變量和因變量之間的關系類型,可分為線性回歸分析和非線性回歸分析。如果在回歸分析中,隻包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示,這種回歸分析稱為一進制線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變量,且自變量之間存線上性相關,則稱為多重線性回歸分析。

Python資料分析入門(十九):繪制散點圖散點圖繪制散點圖:繪制回歸曲線:

通過以上運動員散點圖的分析,我們總體上可以看出來是滿足線性回歸的,是以可以在圖上繪制一個線性回歸的線條。想要繪制線性回歸的線條,需要先按照之前的資料計算出線性方程,假如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])
           

效果圖如下:

Python資料分析入門(十九):繪制散點圖散點圖繪制散點圖:繪制回歸曲線: