Получить модель из Scikit - PullRequest
0 голосов
/ 04 мая 2018

Я работаю над научной статьей о модели предсказания, предсказывающей осложнения при резекции брюшной полости. Я использовал scikit для создания этой модели и получил хорошие результаты (оценка 0,94). Это заставляет нас хотеть увидеть, какая модель сделана Scikit.

На данный момент у нас есть 100 входных переменных, но логически они не так полезны, как другие, и мы хотим уменьшить это число до 20 и посмотреть, как это повлияет на оценку.

Мой вопрос : Есть ли способ получить базовую формулу для модели из scikit вместо того, чтобы использовать ее в качестве «черного ящика» в моей функции SVM.

import numpy as np
from numpy import *
import pandas as pd
from sklearn import tree, svm, linear_model, metrics, preprocessing
import datetime
from sklearn.model_selection import KFold, cross_val_score, ShuffleSplit, GridSearchCV
from time import gmtime, strftime

#database openen en voorbereiden
file = "/home/wouter/scikit/DB_SCIKIT.csv"
DB = pd.read_csv(file, sep=";", header=0, decimal= ',').as_matrix()
DBT = DB
print "Vorm van de DB: ", DB.shape
target = []
for i in range(len(DB[:,-1])):
        target.append(DB[i,-1])
DB = delete(DB,s_[-1],1) #Laatste kolom verwijderen
AantalOutcome = target.count(1)
print "Aantal outcome:", AantalOutcome
print "Aantal patienten:", len(target)

A = DB
b = target

print len(DBT)

svc=svm.SVC(kernel='linear', cache_size=500, probability=True)
indices = np.random.permutation(len(DBT))

rs = ShuffleSplit(n_splits=5, test_size=.15, random_state=None)
scores = cross_val_score(svc, A, b, cv=rs)
A = ("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
print A

X_train = DBT[indices[:-302]]
y_train = []
for i in range(len(X_train[:,-1])):
        y_train.append(X_train[i,-1])
X_train = delete(X_train,s_[-1],1) #Laatste kolom verwijderen

X_test = DBT[indices[-302:]]
y_test = []
for i in range(len(X_test[:,-1])):
        y_test.append(X_test[i,-1])
X_test = delete(X_test,s_[-1],1) #Laatste kolom verwijderen

model = svc.fit(X_train,y_train)
print model

uitkomst = model.score(X_test, y_test)
print uitkomst

voorspel = model.predict(X_test)
print voorspel

Вывод, который я получаю из этого:

Vorm van de DB:  (2011, 101)
Aantal outcome: 128
Aantal patienten: 2011
2011
Accuracy: 0.94 (+/- 0.01)
SVC(C=1.0, cache_size=500, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto', kernel='linear',
  max_iter=-1, probability=True, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
0.927152317881
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

1 Ответ

0 голосов
/ 04 мая 2018

Вы можете сначала сделать выбор некоторых функций ~ А затем использовать Scikit на основе обработанных данных ~

http://scikit -learn.org / стабильный / модули / feature_selection.html #

(есть 3 способа выбора функций: фильтр; обертка; встраивание)

...