色块显示
色塊顯示參考
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.patches as mpatches from sklearn.linear_model import LogisticRegression import pandas as pdpath = 'iris.data' col = ['sepal length','sepal width','petal length','petal width','class'] data = pd.read_csv(path, header=None,names=col) # print(data.head())#將字符標(biāo)簽轉(zhuǎn)成數(shù)字標(biāo)簽 data['class'] = pd.Categorical(data['class']).codes label = data['class'] features = data[['sepal length','sepal width']]# 構(gòu)建模型 logisreg = LogisticRegression() logisreg.fit(features,data['class'])print(logisreg.intercept_,logisreg.coef_) #模型的權(quán)值和偏置 y_hat = logisreg.predict(features)# 訓(xùn)練樣本的預(yù)測(cè)值,是數(shù)字標(biāo)簽,實(shí)際相當(dāng)于LR做多分類 print(u'準(zhǔn)確度:%.2f%%'%(100*np.mean(y_hat==label.ravel())))# 劃分特征值所在的區(qū)域?yàn)橐粋€(gè)一個(gè)的方格 x_min,x_max=features['sepal length'].min()-0.1,features['sepal length'].max()+0.1 y_min,y_max=features['sepal width'].min()-0.1,features['sepal width'].max()+0.1 xx,yy = np.meshgrid(np.linspace(x_min,x_max,200),np.linspace(y_min,y_max,200)) grid_test = np.stack((xx.flat,yy.flat),axis=1)# 計(jì)算分隔點(diǎn)的類別 y_predict = logisreg.predict(grid_test)# 設(shè)置樣本點(diǎn)和背景的顏色 cm_pt = mpl.colors.ListedColormap(['#22B14C','#ED1C24','#A0A0FF'])# 點(diǎn)的顏色 cm_bg = mpl.colors.ListedColormap(['#B0E0E6','#FFC0CB','#B5E61D'])# 背景顏色# 設(shè)置坐標(biāo)軸顯示范圍 plt.xlim(x_min-0.1,x_max+0.1) plt.ylim(y_min-0.1,y_max+0.1) print(y_predict)# 劃分區(qū)域的類別 plt.pcolormesh(xx,yy,y_predict.reshape(xx.shape),cmap=cm_bg)# 顯示訓(xùn)練樣本 plt.scatter(features['sepal length'],features['sepal width'],c=data['class'],cmap=cm_pt,edgecolors='k', s=40,marker='o')# edgecolors 散點(diǎn)邊界的顏色# s散點(diǎn)的大小# marker 散點(diǎn)的形狀 圓形,三角形,五角星,...# 區(qū)域塊的圖例 patchs = [mpatches.Patch(color='#B0E0E6', label='Iris-setosa'),mpatches.Patch(color='#FFC0CB', label='Iris-versicolor'),mpatches.Patch(color='#B5E61D', label='Iris-virginica')] plt.legend(handles=patchs, fancybox=True, framealpha=0.8)#顯示中文 plt.rcParams['font.sans-serif']=['SimHei'] plt.xlabel(u'萼片的長(zhǎng)度') plt.ylabel(u'萼片的寬度')plt.show()色塊顯示的是模型分塊的結(jié)果,圖片中的點(diǎn)是樣本點(diǎn)
plt.scatter()參數(shù)
總結(jié)
- 上一篇: sklearn:auc、roc_curv
- 下一篇: pandas将表中的字符串转成数值型