Pandas中散步矩陣的函數原理python
1 def scatter_matrix(frame, alpha=0.5, figsize=None, ax=None, diagonal='hist', marker='.', density_kwds=None,hist_kwds=None, range_padding=0.05, **kwds)
參數以下:函數
diagonal參數取’kde’值時,表示散佈矩陣的對角線上的圖形爲數據集各特徵的核密度估計(Kernel Density Estimation,KDE)。核密度估計是在機率論中用來估計未知的密度函數,屬於非參數檢驗方法之一。簡單來講,核密度估計就是在當前數據集(連續型數據樣本)已知的狀況下,經過計算來獲取該樣本分佈的機率密度函數;在計算獲取時須要用到核函數,如Gaussian Kernel Density、Exponential Kernel Density、Cosine Kernel Density等,不一樣核函數能夠獲得樣本總體趨勢和密度分佈規律性基本一致的結果;影響該結果的還包括帶寬(bandwidth),帶寬值過大或太小都會影響估計結果;spa
---- 來自 Felix_YU_Q 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/hurry0808/article/details/78573585?utm_source=copy .net
步驟:code
一、導入模塊:pandas、matplotliborm
二、讀取數據對象
三、爲項目設置matplotlib參數blog
設置參數有兩種方法:調用命令matplotlib.rc();經過傳入關鍵字元組,修改參數資源
使用參數字典:matplotlib.rcparams;unicode
爲了能讓matplotlib能正常顯示中文和能正常顯示符號,需調用如下語句
matplotlib.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示正文
matplotlib.rcParams['axes.unicode_minus']=False #用來正常顯示負號
四、使用scatter_matrix畫圖
1 import pandas 2 import matplotlib 3 4 data=pandas.read_csv( 5 "C:\\Users\\Jw\\Desktop\\python_work\\Python數據挖掘實戰課程課件\\4.3\\data.csv") 6 7 x=data[["等級"]] 8 y=data[["資源"]] 9 10 font={ 11 "family":"SimHei"} 12 13 matplotlib.rc('font', **font); 14 matplotlib.rcParams["axes.unicode_minus"]=False 15 16 from pandas.tools.plotting import scatter_matrix 17 18 scatter_matrix( 19 data[["等級", "資源"]], 20 alpha=0.8,figsize=(10,10),diagonal="kde")
scatter_matrix獲得的kde圖符合一元二次方程,與一元二次方程進行對比
1 import numpy; 2 x_ = numpy.arange(-10, 10, 0.01); 3 y_ = x_**2 4 5 from matplotlib import pyplot as plt; 6 7 plt.figure(); 8 plt.title('等級與資源') 9 plt.xlabel('等級') 10 plt.ylabel('資源') 11 plt.grid(True) 12 plt.plot(x_, y_, 'k.') 13 plt.show()
與scatter_matrix獲得的相符合,degree設置爲2
它是使用多項式的方法來進行的,若是有a,b兩個特徵,那麼他的2次多項式爲(1,a,b,a^2,b^2)
PolynomialFeatures有三個參數:
degree:空值多項式的度
interaction_only:默認爲False,若是指定爲True,那麼就不會有特徵本身和本身結合的項,上面的二次項中沒有a^2,b^2
include_bias:默認爲True,若是爲True的話,就會有上面的1 那一項
解決方法:
把一元非線性方程轉化爲多元一次方程;
肯定了一元非線性方程中的n,就能夠做爲degree傳入PolynomialFeatures類;
預測的時候不能直接使用轉換前的因變量做爲參數傳入模型,須要fit_transform轉換才能進行預測
1 from sklearn.linear_model import LinearRegression 2 from sklearn.preprocessing import PolynomialFeatures 3 4 5 pf=PolynomialFeatures(degree=2) 6 x_2_fit=pf.fit_transform(x) #一元二次的方程就轉化爲二元一次的方程 7 8 lrModel=LinearRegression() 9 lrModel.fit(x_2_fit,y) 10 11 lrModel.score(x_2_fit,y) #模型擬合程度 12 13 x_2_predict=pf.fit_transform([[21],[22]]) 14 lrModel.predict([[21],[22]])
小結:
一元n次方程,轉換爲多元線性方程:
pf=sklearn.preprocessing.PolynomialFeatures(degree=2)
轉換方法:
x_2_fit=pf.fit_trasform(x)
預測:
LinearRegression().predict(x_2_fit)