В чем разница между df.iloc [:, 1: 2] .values ​​и df.iloc [:, 1] .values ​​в пандах? - PullRequest
0 голосов
/ 07 октября 2019

Когда я used x = dataset.iloc[:,1:2].values и позже в моем коде

import matplotlib.pyplot as plt
import numpy as np
dataset = pd.read_csv('Position_Salaries.csv')
x = dataset.iloc[:,1:2].values #look here please
y = dataset.iloc[:,-1].values
from sklearn.svm import SVR
sv_regressor = SVR(kernel='rbf')

, поэтому, когда я вместо этого использовал x = dataset.iloc[:,1].values, я получаю сообщение об ошибке:

'ожидаемый 2d массиви вместо этого получил 1d массив '

в строке sv_regresso

Ошибка в sv_regressor строке w, поэтому я пометил sklearn

Ответы [ 2 ]

2 голосов
/ 07 октября 2019

Разница в том, что с dataset.iloc[:,1:2] вы получите DataFrame, а с dataset.iloc[:,-1] вы получите Series. Когда вы используете атрибут values с DataFrame, вы получаете 2d ndarray, а с Series вы получаете 1d ndarray. Рассмотрим следующий пример:

   A  B  C
0  0  2  0
1  1  0  0
2  1  2  1

Series:

type(df.iloc[:, -1])
# pandas.core.series.Series

df.iloc[:, -1].values.shape
# (3,)

DataFrame:

type(df.iloc[:, -1:])
# pandas.core.frame.DataFrame

df.iloc[:, -1:].values.shape
# (3, 1)

Это обычная уловка в машинном обучении для получения целевой переменной как 2dndarray за один шаг.

0 голосов
/ 07 октября 2019

Это почти то же самое, dataset.iloc[:,1:2] дает вам 2-й кадр данных (столбцы с 1 по 2), dataset.iloc[:,1] дает вам серию панд (1-d) (из столбца 1).

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