Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2017 21:16:12

ewro
Зарегистрирован: 2017-11-03
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Ирисы Фишера

Классическая учебная задача с Ирисами. Делал по книге “Введение в машинное обучение с помощью Python” Мюллера 2016-2017г.
Не только тут, но практически везде начинают с того, что загружают датасет из библиотеки:
from sklearn.datasets import load_iris
iris_dataset = load_iris()
Я хотел попробовать работать с файлом CSV, но как-то не задалось и притянул к работающему примеру, но с Warningom. Как-то подготовить CSV файл Ирисов или что правильно нужно делать? Вот переделанный пример из Мюллера:

 import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import read_csv, DataFrame, Series
from pandas.plotting import scatter_matrix
from sklearn.model_selection import train_test_split
import mglearn
from sklearn.neighbors import KNeighborsClassifier
iris_dataset = pd.read_csv('datairis.csv')
iris_targetset = pd.read_csv('targetiris.csv')
X_train, X_test, y_train, y_test = train_test_split(
iris_dataset, iris_targetset, random_state=0)
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
print("Прогнозы для тестового набора:\n {}".format(y_pred))
print("Правильность на тестовом наборе: {:.2f}".format(knn.score(X_test, y_test)))
Изначально Iris.csv я переделал на два файла: datairis.csv и targetiris.csv, распилив их по 4 и 1 столбцам.
Ругается, хотя все считает:

Warning (from warnings module):
File “C:\My PY G\Машинное обучение\Ирисы 7.py”, line 32
knn.fit(X_train, y_train)
DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
Прогнозы для тестового набора:
[2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0
2]
Правильность на тестовом наборе: 0.97

Понимаю - надо что-то с размерностью в Таргете делать. Но что, почему и как - недотягиваю…
Подскажите в каком направлении двигаться.

Офлайн

#2 Ноя. 29, 2017 08:14:23

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Ирисы Фишера

 knn.fit(X_train, np.ravel(y_train))

Офлайн

#3 Ноя. 29, 2017 09:10:49

ewro
Зарегистрирован: 2017-11-03
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Ирисы Фишера

noob_saibot, Спасибо огромное! Все заработало. Я этот ravel() как только ни присобачивал… Безграмотность, что поделать.

Офлайн

#4 Ноя. 29, 2017 09:14:43

ewro
Зарегистрирован: 2017-11-03
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Ирисы Фишера

Если не трудно - скажите, где можно почитать и понять в чем была проблема с размерностью массива? Моим “пониманием” получалось, что размерность должна быть не в 1 столбец, а в … НОЛЬ. Или в два, что тоже непонятно.

Офлайн

#5 Ноя. 29, 2017 11:11:13

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Ирисы Фишера

ewro
Если не трудно - скажите, где можно почитать и понять в чем была проблема с размерностью массива? Моим “пониманием” получалось, что размерность должна быть не в 1 столбец, а в … НОЛЬ. Или в два, что тоже непонятно.
Нужно было передать одномерный массив чтобы не выскочил warning, вы же передали n-мерный (n - длинна y).

PS.
ewro
Машинное обучение\Ирисы
Не пишите на русском: ни код, ни пути, ни комментарии к коду. Чтобы не ловить проблемы.

Отредактировано noob_saibot (Ноя. 29, 2017 11:12:56)

Офлайн

#6 Ноя. 29, 2017 11:57:56

ewro
Зарегистрирован: 2017-11-03
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Ирисы Фишера

Спасибо за совет и ссылку. Буду прорубать.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version