我刚刚为正则化Logistic回归实现了一个模型,但是在绘制决策边界时遇到了困难。我正在使用一个名为mlxtend的程序包,该程序包应该是实现决策边界的一种无缝方法,但是我花了一整天的时间来尝试使它生效。
请向我指出正确的方向,以绘制决策边界。太感谢了!
导入matplotlib.pyplot作为plt
将熊猫作为pd导入
将numpy导入为np
从sklearn.preprocessing导入PolynomialFeatures
从sklearn.linear_model导入LogisticRegression
从sklearn.model_selection导入train_test_split
从mlxtend.plotting导入plot_decision_regions
数据集= pd.read_csv(“ Microchip Test Dataset.txt”,名称= [“ Test 1”,“ Test 2”,“ Accepted”])
打印(dataset.head())
#可视化数据集
正=数据集[数据集[“已接受”] == 1]
否=数据集[数据集[“已接受”] == 0]
plt.scatter(正[“测试1”],正[“测试2”],颜色=“蓝色”,标记=“ o”,标签=“接受”)
plt.scatter(否定[“测试1”],否定[“测试2”],颜色=“红色”,标记=“ x”,标签=“已拒绝”)
plt.title(“ Microchip Test”)
plt.xlabel(“测试1”)
plt.ylabel(“测试2”)
plt.legend()
plt.show()
#预处理数据
col = len(dataset.columns)
x = dataset.iloc [:,0:col-1] .values
y = dataset.iloc [:,col-1:col] .values
#添加多项式特征
poly =多项式特征(6)
x = poly.fit_transform(x)
print(f“ \ nX Shape:{x.shape} Y Shape:{y.shape}”)
x_train,x_test,y_train,y_test = train_test_split(x,y,random_state = 1306)
#培训模式
reg = LogisticRegression()
reg.fit(x_train,y_train)
概率= reg.predict(x_test)
precision_score = reg.score(x_test,y_test)* 100
coeff = reg.coef_
截距= reg.intercept_
print(f“精度:{accuracy_score:.2f}%”)
print(f“系数= {coeff}”)
print(f“拦截系数= {拦截}”)
值= 1.5
宽度= 0.75
e = {}
f = {}
对于我在范围(2,28)中:
e [i] =值
对于范围(2,28)中的j:
f [j] =宽度
#可视化输出
plot_decision_regions(x,y.flatten(),clf = reg,
Filler_feature_values = e,
Filler_feature_ranges = f,
)
plt.xlabel(“测试1”)
plt.ylabel(“测试2”)
plt.legend()
plt.show()
数据集为:Microchip测试数据集