machine-learning - 逻辑回归模型 LogisticRegression 中的内核 scikit-learn sklearn

标签 machine-learning scikit-learn kernel svm logistic-regression

如何使用 sklearn 库在逻辑回归模型中使用内核?

logreg = LogisticRegression()

logreg.fit(X_train, y_train)

y_pred = logreg.predict(X_test)
print(y_pred)

print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))
predicted= logreg.predict(predict)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

最佳答案

非常好的问题,但 scikit-learn 目前既不支持内核逻辑回归,也不支持 ANOVA 内核。

不过你可以实现它。

方差分析核的示例 1:

import numpy as np
from sklearn.metrics.pairwise import check_pairwise_arrays
from scipy.linalg import cholesky
from sklearn.linear_model import LogisticRegression

def anova_kernel(X, Y=None, gamma=None, p=1):
    X, Y = check_pairwise_arrays(X, Y)
    if gamma is None:
        gamma = 1. / X.shape[1]

    diff = X[:, None, :] - Y[None, :, :]
    diff **= 2
    diff *= -gamma
    np.exp(diff, out=diff)
    K = diff.sum(axis=2)
    K **= p
    return K

# Kernel matrix based on X matrix of all data points
K = anova_kernel(X)
R = cholesky(K, lower=False)

# Define the model
clf = LogisticRegression()

# Here, I assume that you have split the data and here, train are the indices for the training set
clf.fit(R[train], y_train)
preds = clf.predict(R[test])¨
<小时/>

Nyström 示例 2:

from sklearn.kernel_approximation import Nystroem
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline

K_train = anova_kernel(X_train)
clf = Pipeline([
    ('nys', Nystroem(kernel='precomputed', n_components=100)),
    ('lr', LogisticRegression())])
clf.fit(K_train, y_train)

K_test = anova_kernel(X_test, X_train)
preds = clf.predict(K_test)

关于machine-learning - 逻辑回归模型 LogisticRegression 中的内核 scikit-learn sklearn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199141/

相关文章:

C++ 支持 vector 机 (SVM) 模板库?

machine-learning - Tensorflow:训练批处理中的所有项目都具有相同的预测标签

machine-learning - 异常检测 - 使用什么

machine-learning - 可视化失败时检测隐藏的未知模式

python - 在 TensorFlow 中再现 scikit-learn 的 MLPClassifier

linux - 为 linux 3.2.x 与基于 2.6.x 的系统编译的代码之间存在巨大的时间差异

python - 如何在 sklearn 中编写自定义估算器并对其使用交叉验证?

python - Scikit 学习 : RidgeCV seems not to give the best option?

linux - Kernel中的链表遍历

c - 为什么在 fs/ext2/inode.c 的 "inode->i_ino - 1"减一?