TypeError в sns.jointplot - PullRequest
       5

TypeError в sns.jointplot

0 голосов
/ 14 марта 2020

Я пытаюсь построить простое линейное соответствие для набора данных из pandas кадра данных. Это мой код:

import numpy as np
import pandas as pd
import sklearn
import seaborn as sns
import sys
import matplotlib.pyplot as plt

df = pd.read_csv("../Machine Learning/housing.data", header=None,
                 delim_whitespace=True)

col_name = ['Crime', 'ZN', 'Indus', 'Chas', 'Nox','RM', 'Age', 'Dis', 
            'Rad', 'Tax', 'PTRatio', 'B', 'LSTAT', 'MEDV']

df.columns = col_name

X = df.RM.values.reshape(-1,1)
y = df.MEDV.values.reshape(-1,1)

from sklearn.linear_model import LinearRegression

model = LinearRegression()

model.fit(X,y)

plt.figure(figsize=(12,10))
sns.jointplot(x='RM', y='MEDV', data=df, kind='reg', height=10)
plt.show()

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "regression_scipy.py", line 74, in <module>
    sns.jointplot(x='RM', y='MEDV', data=df, kind='reg', height=10) ...
TypeError: Cannot cast array data from dtype('int64') to dtype('int32') according to the rule 'safe'

Я проверил свои массивы X и y. Они numpy.ndarrays.

Где я иду не так?

1 Ответ

0 голосов
/ 14 марта 2020

TypeError возникает потому, что тип фрейма данных df является 64-битным int, где ожидается тип 32-битный int. Понижение с 64 до 32-разрядного целого числа небезопасно - оно несет опасность переполнения, поэтому оно не выполняется автоматически. Если вы уверены, что ваши данные можно безопасно хранить в виде 32-битных целых чисел, то одним из способов устранения этой ошибки является явное приведение с помощью метода pandas.DataFrame.astype. Т.е.

sns.jointplot(x='RM', y='MEDV', data=df.astype('int32'), kind='reg', height=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...