Найти - Пользователи
Полная версия: Ирисы Фишера
Начало » Python для новичков » Ирисы Фишера
1
ewro
Классическая учебная задача с Ирисами. Делал по книге “Введение в машинное обучение с помощью 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

Понимаю - надо что-то с размерностью в Таргете делать. Но что, почему и как - недотягиваю…
Подскажите в каком направлении двигаться.
noob_saibot
 knn.fit(X_train, np.ravel(y_train))
ewro
noob_saibot, Спасибо огромное! Все заработало. Я этот ravel() как только ни присобачивал… Безграмотность, что поделать.
ewro
Если не трудно - скажите, где можно почитать и понять в чем была проблема с размерностью массива? Моим “пониманием” получалось, что размерность должна быть не в 1 столбец, а в … НОЛЬ. Или в два, что тоже непонятно.
noob_saibot
ewro
Если не трудно - скажите, где можно почитать и понять в чем была проблема с размерностью массива? Моим “пониманием” получалось, что размерность должна быть не в 1 столбец, а в … НОЛЬ. Или в два, что тоже непонятно.
Нужно было передать одномерный массив чтобы не выскочил warning, вы же передали n-мерный (n - длинна y).

PS.
ewro
Машинное обучение\Ирисы
Не пишите на русском: ни код, ни пути, ни комментарии к коду. Чтобы не ловить проблемы.
ewro
Спасибо за совет и ссылку. Буду прорубать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB