2016-07-19 2 views
0

Я следую yhat's tutorial on predictive analytics, но я столкнулся с некоторыми проблемами, когда достиг уровня перекрестной проверки. Всякий раз, когда я пытаюсь выполнить эти две части кода, Jupyter застревает на этапе выполнения. Вот проблематичные входы: Input 1Блокнот Jupyter не исполняется

from sklearn.cross_validation import KFold 

def run_cv(X,y,clf_class,**kwargs): 
    # Construct a kfolds object 
    kf = KFold(len(y),n_folds=5,shuffle=True) 
    y_pred = y.copy() 

    # Iterate through folds 
    for train_index, test_index in kf: 
     X_train, X_test = X[train_index], X[test_index] 
     y_train = y[train_index] 
     # Initialize a classifier with key word arguments 
     clf = clf_class(**kwargs) 
     clf.fit(X_train,y_train) 
     y_pred[test_index] = clf.predict(X_test) 
    return y_pred 

В следующем входе я на самом деле попробовать и сравнить три алгоритма - Input 2:

from sklearn.svm import SVC 
from sklearn.ensemble import RandomForestClassifier as RF 
from sklearn.neighbors import KNeighborsClassifier as KNN 

def accuracy(y_true,y_pred): 
    # NumPy interprets True and False as 1. and 0. 
    return np.mean(y_true == y_pred) 

print "Support vector machines:" 
print "%.3f" % accuracy(y, run_cv(X,y,SVC)) 
print "Random forest:" 
print "%.3f" % accuracy(y, run_cv(X,y,RF)) 
print "K-nearest-neighbors:" 
print "%.3f" % accuracy(y, run_cv(X,y,KNN)) 

Есть ли что-то случилось с моим кодом или это Jupyter вопрос?

+0

SVM занимает много времени ... какова ваша форма данных? – hashcode55

+0

И по умолчанию он использует ядро ​​rbf, я избегаю использовать SVM с ядром из-за этого, попробуйте использовать линейный SVC. – hashcode55

+0

Я не уверен, что знаю, что вы подразумеваете под формой данных. Тем не менее, я могу сказать, что мой тренировочный набор составляет около 54 тыс. Строк с 6 функциями. Кроме того, сколько времени это займет? Мы говорим несколько минут? – DBE7

ответ

1

Просто создал набор данных около 54 тыс. Строк и 3 функций и запустил тот же учебник yhat, который у вас есть. Прошло около 30 секунд, чтобы запустить, в 2016 macbook pro.

Не думайте, что что-то не так с вашим кодом, для запуска достаточно времени.

Чтобы проверить это, вы можете ограничить размер своего набора данных и выполнить пробный прогон. Если это сработает, тогда вы знаете, что это займет некоторое время.

Например, начните с первых 200 образцов ваших данных. Пробег:

X = X[:200] 
y = y[:200] 

перед тем, как вы выполните проверку перекрестных ссылок для ограничения данных.

+0

Спасибо за это. Теперь, если я хочу использовать модель, которую я только что создал, чтобы на самом деле предсказать вероятности БЕЗ программного обеспечения yhat. Как мне это сделать? Быстрый отказ от ответственности, я совершенно новый для машинного обучения. Был бы очень признателен, если бы вы могли указать мне в правильном направлении. – DBE7

+0

Так что 'clf.predict' делает фактическое предсказание. Итак, вы уже, в своем блокноте, что-то предсказываете. Если вы понятия не имеете, что делаете, я бы попробовал еще какие-нибудь более общие школы, изучающие тибетский язык. Выберите одну из трех моделей, которые вы используете, которые лучше всего подходят, и найдите хороший учебник, в котором используется scikit-learn и только эта модель. – wonderkid2

+0

ИЛИ ознакомьтесь с замечательной новой технической документацией от SO. Пример RandomForestClassifier: http://stackoverflow.com/documentation/scikit-learn/2468/classification/8146/randomforestclassifier#t=20160722204615349729 – wonderkid2