分类加权逻辑回归代码python
时间: 2023-05-29 12:07:13 浏览: 249
以下是一个分类加权逻辑回归的Python代码示例:
```
import numpy as np
from sklearn.linear_model import LogisticRegression
class WeightedLogisticRegression:
def __init__(self, n_classes, weights=None):
self.models = [LogisticRegression() for _ in range(n_classes)]
self.n_classes = n_classes
self.weights = weights if weights is not None else np.ones(n_classes)
def fit(self, X, y):
for i in range(self.n_classes):
self.models[i].fit(X, y[:, i], sample_weight=self.weights[i] * y[:, i].sum())
def predict(self, X):
preds = np.zeros((X.shape[0], self.n_classes))
for i in range(self.n_classes):
preds[:, i] = self.models[i].predict_proba(X)[:, 1]
return preds
# 示例
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, (100, 3))
clf = WeightedLogisticRegression(n_classes=3, weights=[1, 2, 3])
clf.fit(X, y)
preds = clf.predict(X)
print(preds)
```
在上面的代码中,我们首先导入了必要的库,然后创建了一个 `WeightedLogisticRegression` 类,它包含了多个逻辑回归模型,每个模型用于预测一个类别。我们的目标是根据权重对模型进行加权,以便在多分类问题中更好地处理类别不平衡的情况。
在 `fit` 方法中,我们为每个模型拟合数据,使用每个类别的特定权重进行加权。
在 `predict` 方法中,我们对每个模型预测类别概率,然后将它们合并成一个概率矩阵,其中每一行对应于测试样本,每一列对应于一个类别。
最后,我们使用示例数据对模型进行了测试,并输出了预测结果。
阅读全文