【问题标题】:Python sklearn df issue - Field Cady sample code issuePython sklearn df 问题 - Field Cady 示例代码问题
【发布时间】:2018-08-07 17:04:57
【问题描述】:

我正在阅读 Field Cady 的“数据科学手册”,这里有示例代码:https://github.com/field-cady/the_data_science_handbook/blob/master/chapter08_classifiers/example.py

我从这段代码的第 23 行得到语法错误,即:

File "<ipython-input-4-02028cc326e3>", line 2
    X, Y = df[df.columns[:3]], (df['species']=='virginica') X_train, X_test, 
Y_train, Y_test = train_test_split(X, Y, test_size=.8)
                                                                  ^
SyntaxError: invalid syntax

我在 Google 上四处搜索,但找不到任何答案 - 如果有人能够发出任何光芒,我将不胜感激。

非常感谢

完整代码:

from matplotlib import pyplot as plt
import sklearn
from sklearn.metrics import roc_curve, auc
from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.naive_bayes import GaussianNB
# name -> (line format, classifier)
CLASS_MAP = {
    'LogisticRegression':
        ('-', LogisticRegression()),
    'Naive Bayes': ('--', GaussianNB()),
    'Decision Tree':
        ('.-', DecisionTreeClassifier(max_depth=5)),
    'Random Forest':
        (':', RandomForestClassifier(
            max_depth=5, n_estimators=10,
            max_features=1)),
}
# Divide cols by independent/dependent, rows by test/ train
X, Y = df[df.columns[:3]], (df['species']=='virginica') X_train, X_test, 
Y_train, Y_test = \
    train_test_split(X, Y, test_size=.8)
for name, (line_fmt, model) in CLASS_MAP.items():
    model.fit(X_train, Y_train)
    # array w one col per label
    preds = model.predict_proba(X_test)
    pred = pd.Series(preds[:,1])
    fpr, tpr, thresholds = roc_curve(Y_test, pred)
    auc_score = auc(fpr, tpr)
    label='%s: auc=%f' % (name, auc_score)
    plt.plot(fpr, tpr, line_fmt,
        linewidth=5, label=label)
plt.legend(loc="lower right")
plt.title('Comparing Classifiers')
plt.plot([0, 1], [0, 1], 'k--') #x=y line.  Visual aid
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate') 
plt.ylabel('True Positive Rate')
plt.show()

【问题讨论】:

  • X_train前少了一个逗号。
  • 非常感谢 v,这现在给了我新的错误...不确定它在 cmets 中是否显示得很好,^ 指向第一个 = 符号 X,Y = df[df. columns[:3]], (df['species']=='virginica'), X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=.8) ^ SyntaxError: can't assign to compare
  • 请贴出您的代码,而不仅仅是错误,以便我们给您更好的指导。
  • 谢谢,SummerEla,我也在原帖底部添加了。

标签: python scikit-learn sklearn-pandas


【解决方案1】:

您必须先加载iris 数据集。这是您的更新代码。

    from matplotlib import pyplot as plt
    import sklearn
    from sklearn.metrics import roc_curve, auc
    from sklearn.cross_validation import train_test_split
    from sklearn.linear_model import LogisticRegression
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.naive_bayes import GaussianNB
    # name -> (line format, classifier)
    from sklearn.datasets import load_iris
    import pandas as pd
    data = load_iris()
    df = pd.DataFrame(data['data'], columns=data['feature_names'])
    df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)


    CLASS_MAP = {
        'LogisticRegression':
            ('-', LogisticRegression()),
        'Naive Bayes': ('--', GaussianNB()),
        'Decision Tree':
            ('.-', DecisionTreeClassifier(max_depth=5)),
        'Random Forest':
            (':', RandomForestClassifier(
                max_depth=5, n_estimators=10,
                max_features=1)),
    }
    # Divide cols by independent/dependent, rows by test/ train
    X, Y = df[df.columns[:3]], (df['species']=='virginica') 
    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=.8)
    for name, (line_fmt, model) in CLASS_MAP.items():
        model.fit(X_train, Y_train)
        # array w one col per label
        preds = model.predict_proba(X_test)
        pred = pd.Series(preds[:,1])
        fpr, tpr, thresholds = roc_curve(Y_test, pred)
        auc_score = auc(fpr, tpr)
        label='%s: auc=%f' % (name, auc_score)
        plt.plot(fpr, tpr, line_fmt,
            linewidth=5, label=label)
    plt.legend(loc="lower right")
    plt.title('Comparing Classifiers')
    plt.plot([0, 1], [0, 1], 'k--') #x=y line.  Visual aid
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel('False Positive Rate') 
    plt.ylabel('True Positive Rate')
    plt.show()

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多