色块显示
色塊顯示參考
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())#將字符標簽轉成數字標簽 data['class'] = pd.Categorical(data['class']).codes label = data['class'] features = data[['sepal length','sepal width']]# 構建模型 logisreg = LogisticRegression() logisreg.fit(features,data['class'])print(logisreg.intercept_,logisreg.coef_) #模型的權值和偏置 y_hat = logisreg.predict(features)# 訓練樣本的預測值,是數字標簽,實際相當于LR做多分類 print(u'準確度:%.2f%%'%(100*np.mean(y_hat==label.ravel())))# 劃分特征值所在的區域為一個一個的方格 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)# 計算分隔點的類別 y_predict = logisreg.predict(grid_test)# 設置樣本點和背景的顏色 cm_pt = mpl.colors.ListedColormap(['#22B14C','#ED1C24','#A0A0FF'])# 點的顏色 cm_bg = mpl.colors.ListedColormap(['#B0E0E6','#FFC0CB','#B5E61D'])# 背景顏色# 設置坐標軸顯示范圍 plt.xlim(x_min-0.1,x_max+0.1) plt.ylim(y_min-0.1,y_max+0.1) print(y_predict)# 劃分區域的類別 plt.pcolormesh(xx,yy,y_predict.reshape(xx.shape),cmap=cm_bg)# 顯示訓練樣本 plt.scatter(features['sepal length'],features['sepal width'],c=data['class'],cmap=cm_pt,edgecolors='k', s=40,marker='o')# edgecolors 散點邊界的顏色# s散點的大小# marker 散點的形狀 圓形,三角形,五角星,...# 區域塊的圖例 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'萼片的長度') plt.ylabel(u'萼片的寬度')plt.show()色塊顯示的是模型分塊的結果,圖片中的點是樣本點
plt.scatter()參數
總結
- 上一篇: sklearn:auc、roc_curv
- 下一篇: pandas将表中的字符串转成数值型