下面是一个基于逻辑回归的多分类分类器的Python代码示例:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression
# 生成数据
X, y = make_blobs(n_samples=100, centers=3, random_state=0)
# 创建模型
model = LogisticRegression(multi_class='auto', solver='lbfgs')
# 拟合数据
model.fit(X, y)
# 生成网格数据以绘制决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
np.arange(y_min, y_max, 0.1))
# 对网格数据进行预测
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 绘制决策边界和数据点
plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k')
plt.show()
在这个例子中,我们使用make_blobs
函数生成了一个三分类的数据集。我们创建了一个逻辑回归模型,并通过fit
方法拟合数据。然后,我们生成了网格数据以绘制决策边界,并使用模型对网格数据进行预测。最后,使用contourf
函数绘制了决策边界,并使用scatter
函数绘制了数据点。
请注意,这里使用的是LogisticRegression
类,它是sklearn
库中的一个实现了逻辑回归的分类器。你可以根据需要使用不同的参数和解决方案来调整模型。
在R语言中,你可以使用multinom
函数从nnet
包中进行多分类逻辑回归。下面是一个示例代码:
library(nnet)
# 生成数据
set.seed(0)
n <- 100
X <- matrix(rnorm(n*2), ncol=2)
y <- factor(sample(1:3, n, replace=TRUE))
# 创建模型
model <- multinom(y ~ X)
# 预测新数据
new_data <- matrix(rnorm(10*2), ncol=2)
pred <- predict(model, newdata=new_data, type='class')
# 绘制决策边界和数据点
plot(X, col=y)
points(new_data, col=pred, pch=19, cex=2)
在这个例子中,我们首先使用rnorm
函数生成了一个二维的随机数据集X
,然后使用factor
函数生成了一个随机的三分类标签y
。接下来,我们使用multinom
函数创建了一个多分类逻辑回归模型,并使用y ~ X
指定了因变量和自变量的关系。然后,我们使用predict
函数对新数据new_data
进行预测,并指定type='class'
参数以返回预测的类别。最后,我们使用plot
函数绘制了原始数据点,使用points
函数绘制了预测结果的数据点。
请注意,在R语言中,multinom
函数使用了一个拟合多项式逻辑回归模型的迭代算法。你可以根据需要调整参数和解决方案来适应你的数据。