Как назначить метки и функции при загрузке файла данных CSV в Pandas Dataframe - PullRequest
0 голосов
/ 24 марта 2019

Я загружаю файл CSV в фрейм данных Pandas для проекта машинного обучения.У меня 16 колонок.«Метка» или «цель» - это последний столбец.Остальные переменные.Мне нужно определить первые 15 столбцов как объекты, а 16-й - как цель.

Кажется, что все примеры, которые я нахожу, демонстрируют машинное обучение на наборе, который уже определил их.Как я могу определить свою «цель» сам?

import pandas as pd   
import numpy as np    
import sklearn   
from sklearn.model_selection import train_test_split
lymph = pd.read_csv("D:\\dataset_10_lymph.csv", encoding="utf-8", header = 0)

array = lymph.values
data = array[:,0:-1]
target = array[:,-1]

X_train, X_test, y_train, y_test = train_test_split(lymph.data, lymph.target, stratify=lymph.target, random_state=66)

Но когда я пытаюсь проверить, что мой целевой массив сгенерирован правильно, я получаю трассировку.

AttributeError: у объекта «DataFrame» нет атрибута «data»

Похоже, что это будет тривиальный шаг, который нужно сделать, если они не используют набор данных sklearn для практики.Любая помощь будет оценена.Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Ну, я получил его для работы:

    target = lymph.columns[-1]
    X = lymph.drop(target, axis = 1)
    y = lymph.drop(X, axis = 1)
    X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2)
0 голосов
/ 24 марта 2019

Это:

lymph = pd.read_csv("D:\\dataset_10_lymph.csv", encoding="utf-8", header = 0)

даст вам DataFrame с именами столбцов в цифрах.Поэтому последующие lymph.data не найдут столбец с именем data и не дадут вам трассировку.

Вы можете назначить имена столбцов следующим образом:

lymph.columns = [....]

со списком из 16 строкКак вы сказали, есть 16 столбцов.Затем вы должны использовать имена этих столбцов в вызове функции train_test_split().Однако, как вы сказали, первые 15 столбцов являются входными, а 16-й - меткой.Таким образом, метка 1 проста, но входными функциями является просто DataFrame с 16-ым столбцом.Поэтому сделайте это вместо этого:

train_test_split(lymph.drop("target", axis=1), lymph.target, stratify=lymph.target, random_state=66)

, где "target" - это название вашего 16-го столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...