train_test_split не разделяет данные

Существует фрейм данных, который в общей сложности состоит из 14 столбцов, последний столбец - это целевая метка с целыми значениями = 0 или 1.

Я определил -

  1. X = df.iloc [:, 1:13] ---- состоит из значений характеристик
  2. Ly = df.iloc [:, - 1] ------ он состоит из соответствующих ярлыков

Оба имеют желаемую длину, X - это фрейм данных, состоящий из 13 столбцов, shape (159880, 13), y - это тип массива с shape (159880,)

Но когда я выполняю train_test_split на X, y - функция не работает должным образом.

Ниже приведен простой код -

X_train, y_train, X_test, y_test = train_test_split (X, y, random_state = 0)

После этого разделения и X_train, и X_test имеют форму (119910,13). y_train имеет форму (39970,13), а y_test имеет форму (39970,)

Это странно, даже после определения параметра test_size результаты остаются прежними.

Посоветуйте, пожалуйста, что могло пойти не так.

import pandas as pd

импортировать numpy как np из sklearn.tree импортировать DecisionTreeClassifier из adspy_shared_utilities импортировать plot_feature_importances из sklearn.model_selection импортировать train_test_split из sklearn.linear_model import LogisticRegression

def модель ():

df = pd.read_csv('train.csv', encoding = 'ISO-8859-1')
df = df[np.isfinite(df['compliance'])]
df = df.fillna(0)
df['compliance'] = df['compliance'].astype('int')
df = df.drop(['grafitti_status', 'violation_street_number','violation_street_name','violator_name',
              'inspector_name','mailing_address_str_name','mailing_address_str_number','payment_status',
              'compliance_detail', 'collection_status','payment_date','disposition','violation_description',
              'hearing_date','ticket_issued_date','mailing_address_str_name','city','state','country',
              'violation_street_name','agency_name','violation_code'], axis=1)
df['violation_zip_code'] = df['violation_zip_code'].replace(['ONTARIO, Canada',', Australia','M3C1L-7000'], 0)
df['zip_code'] = df['zip_code'].replace(['ONTARIO, Canada',', Australia','M3C1L-7000'], 0)
df['non_us_str_code'] = df['non_us_str_code'].replace(['ONTARIO, Canada',', Australia','M3C1L-7000'], 0)
df['violation_zip_code'] = pd.to_numeric(df['violation_zip_code'], errors='coerce')
df['zip_code'] = pd.to_numeric(df['zip_code'], errors='coerce')
df['non_us_str_code'] = pd.to_numeric(df['non_us_str_code'], errors='coerce')
#df.violation_zip_code = df.violation_zip_code.replace('-','', inplace=True)
df['violation_zip_code'] = np.nan_to_num(df['violation_zip_code'])
df['zip_code'] = np.nan_to_num(df['zip_code'])
df['non_us_str_code'] = np.nan_to_num(df['non_us_str_code'])
X = df.iloc[:,0:13]
y = df.iloc[:,-1]
X_train, y_train, X_test, y_test = train_test_split(X, y, random_state = 0)    
print(y_train.shape)

person Nakul Sharma    schedule 01.07.2018    source источник


Ответы (1)


Вы перепутали результаты train_test_split, должно быть

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,random_state=0)
person Gambit1614    schedule 01.07.2018