Если эта ошибка возникает в:
np.arange(min(X),max(X), 0.1)
это должно быть потому, что min(X)
и max(X)
являются строками.
In [385]: np.arange('123','125')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-385-0a55b396a7c3> in <module>
----> 1 np.arange('123','125')
TypeError: unsupported operand type(s) for -: 'str' and 'str'
Поскольку X
является pandas
объектом (фреймом данных или серией?), Это не так уж удивительно. pandas
свободно использует объект dtype, когда не может использовать число (и не использует пустую строку dtype):
X = dataset.iloc[:, 1:2]
np.arange(np.array('123'),np.array('125'))
выдает другую ошибку, касающуюся типов U3.
Тот факт, что вызовы LinearRegresion работают с этим X
, немного озадачивает, но я не знаю, как он дезинфицирует свои входные данные.
В любом случае, я бы проверил min(X)
перед вызовом arange
, посмотрев на его значение и тип. Если это строка, изучите X
более подробно.
В комментарии вы говорите: there are two columns and all have integers from 1-10 and 45k to 100k.
Это 45k целое число или строка?
Давайте проведем тест на фиктивном фрейме данных:
In [392]: df = pd.DataFrame([[1,45000],[2,46000],[3,47000]], columns=('A','B'))
In [393]: df
Out[393]:
A B
0 1 45000
1 2 46000
2 3 47000
In [394]: min(df)
Out[394]: 'A'
In [395]: max(df)
Out[395]: 'B'
min
и max
создают строки - производные от имен столбцов.
В отличие от этого fit
функции, вероятно, работают со значениями массива кадра данных:
In [397]: df.to_numpy()
Out[397]:
array([[ 1, 45000],
[ 2, 46000],
[ 3, 47000]])
Не думайте, что все должно работать! Проверка, отладка, печать подозрительных значений.
min/max
- функции Python. Цифровые работают с чувствительностью к фрейму данных -
In [399]: np.min(df) # delegates to df.min()
Out[399]:
A 1
B 45000
dtype: int64
In [400]: np.max(df)
Out[400]:
A 3
B 47000
dtype: int64
хотя они не являются подходящими для arange
.
Что именно вы намереваетесь произвести с этим arange
звонком?
arange
в диапазоне один столбец работающего кадра данных:
In [405]: np.arange(np.min(df['A']), np.max(df['A']),.1)
Out[405]:
array([1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2,
2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9])