Почему мои данные перегоняются, несмотря на то, что я использовал перекрестную проверку с cross_val_score в логистической регрессии? - PullRequest
0 голосов
/ 20 декабря 2018

Я использую файл «WA_Fn-UseC_-Telco-Customer-Churn.csv» в оттоке клиентов Telcom, взятом из https://www.kaggle.com/blastchar/telco-customer-churn, чтобы предсказать отток с помощью LogisticRegression () scikit-learn.

import pandas as pd
    from sklearn.linear_model import LogisticRegression
    from sklearn.model_selection import cross_val_score
    data=pd.read_csv(file)

    #get rid of ID's
    data=data.iloc[:,1:]

    #turn categorical data to dummies
    data2=pd.get_dummies(data,columns=['gender', 'Partner', 'Dependents',
       'PhoneService', 'MultipleLines', 'InternetService', 'OnlineSecurity',
       'OnlineBackup', 'DeviceProtection', 'TechSupport', 'StreamingTV',
       'StreamingMovies', 'Contract','PaperlessBilling', 'PaymentMethod'])

    #Some cleaning and adjustment
    data2["TotalCharges"].replace('[^0-9.]',np.nan,inplace=True,regex=True)
    data2["Churn"].replace(('Yes','No'),(1,0),inplace=True)
    data2=data2.dropna()

    #assign features and target 
    X = data2[data2.columns[:-1]] # Features
    y = data2.Churn # Target variable

    scores=cross_val_score(LogisticRegression(), X, y, cv=10) 
    print(scores)

Однако это печатает только 1 балл, я также пытался использовать тасование с разделением Shuffle.

1 Ответ

0 голосов
/ 20 декабря 2018

При очистке данных вы забыли удалить целевой столбец из ваших тренировочных данных.

После получения манекенов, 'Churn' больше не является последним столбцом, data2.columns[:-1] оставляет его внутри тренировочного набора, и ваша модель в конечном итоге учится на нем.

...