Một cách để huấn luyện Hồi quy logistic là sử dụng phương pháp giảm độ dốc ngẫu nhiên, mà scikit-learn cung cấp giao diện.
Những gì tôi muốn làm là lấy một scikit-học của SGDClassifier và có nó ghi bàn giống như một Logistic Regression đây . Tuy nhiên, tôi phải thiếu một số cải tiến về máy học, vì điểm của tôi không tương đương.
Đây là mã hiện tại của tôi. Tôi còn thiếu gì trên SGDClassifier mà nó sẽ tạo ra kết quả tương tự như hồi quy logistic?
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import SGDClassifier
import numpy as np
import pandas as pd
from sklearn.cross_validation import KFold
from sklearn.metrics import accuracy_score
# Note that the iris dataset is available in sklearn by default.
# This data is also conveniently preprocessed.
iris = datasets.load_iris()
X = iris["data"]
Y = iris["target"]
numFolds = 10
kf = KFold(len(X), numFolds, shuffle=True)
# These are "Class objects". For each Class, find the AUC through
# 10 fold cross validation.
Models = [LogisticRegression, SGDClassifier]
params = [{}, {"loss": "log", "penalty": "l2"}]
for param, Model in zip(params, Models):
total = 0
for train_indices, test_indices in kf:
train_X = X[train_indices, :]; train_Y = Y[train_indices]
test_X = X[test_indices, :]; test_Y = Y[test_indices]
reg = Model(**param)
reg.fit(train_X, train_Y)
predictions = reg.predict(test_X)
total += accuracy_score(test_Y, predictions)
accuracy = total / numFolds
print "Accuracy score of {0}: {1}".format(Model.__name__, accuracy)
Đầu ra của tôi:
Accuracy score of LogisticRegression: 0.946666666667
Accuracy score of SGDClassifier: 0.76