Member 13895806 Ответов: 1

Typeerror: требуется аргумент float, а не фрейм данных


Это мой полный код, и я не могу определить, что должно быть сделано для corr_value. На последнем шаге я получаю ошибку "TypeError: требуется аргумент float, а не DataFrame". Любая идея будет очень полезна

from sklearn.datasets import load_boston
import pandas as pd
boston = load_boston()
dataset = pd.DataFrame(data=boston.data, columns=boston.feature_names)
dataset['target'] = boston.target
print(dataset.head())

X = dataset.drop('target', axis = 1 )
Y = dataset["target"]

#Now the dataframe X has just the features that influence the target
#print the correlation matrix for dataframe X. Use '.corr()' function to compute #correlation matrix
#from the correlation matrix note down the correlation value between 'CRIM' and #'PTRATIO' and assign it to variable 'corr_value'
corr_value = X.corr()
print(corr_value.head())

import statsmodels.api as sm
statsModel = sm.OLS(Y, X)
fittedModel = statsModel.fit()
print(fittedModel.summary())


Результаты регрессии OLS
==============================================================================
Деп. переменная: целевой R-квадрат: 0.959
Модель: OLS Adj. R-квадрат: 0.958
Метод: наименьшие квадраты F-статистика: 891.1
Дата: Пн, 02 июля 2018 Prob (F-статистика): 0.00
Время: 22:36:03 Логарифмическая Вероятность: -1523.8
Количество наблюдений: 506 AIC: 3074.
Остатки Df: 493 BIC: 3129.
Модель Df: 13
Тип ковариации: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Крим -0.0916 0.034 -2.675 0.008 -0.159 -0.024
ЗН 0.0487 3.379 0.014 0.001 0.020 0.077
Инд -0.0038 0.064 -0.059 0.953 -0.130 0.123
Час 2.8564 0.904 3.160 0.002 1.080 4.633
NOx в -2.8808 3.359 -0.858 0.392 -9.481 3.720
РМ 5.9252 0.309 19.168 0.000 5.318 6.533
Возраст -0.0072 0.014 -0.523 0.601 -0.034 0.020
Дис -0.9680 0.196 -4.947 0.000 -1.352 -0.584
Рад 0,1704 0,067 2,554 0,011 0,039 0,302
Налог -0.0094 0.004 -2.393 0.017 -0.017 -0.002
PTRATIO -0.3924 0.110 -3.571 0.000 -0.608 -0.177
Б 0.0150 5.561 0.003 0.000 0.010 0.020
LSTAT -0.4170 0.051 -8.214 0.000 -0.517 -0.317
==============================================================================
Омнибус: 204.050 Дурбин-Уотсон: 0.999
Prob(Omnibus): 0.000 Jarque-Bera (JB): 1372.527
Перекос: 1.609 Prob(JB): 9.11 e-299
Эксцесс: 10.399 Конд. № 8.50 е+03
==============================================================================

Предупреждения:
[1] стандартные ошибки предполагают, что ковариационная матрица ошибок задана правильно.
[2] номер условия большой, 8.5 e+03. Это может указывать на то, что существуют
сильная мультиколлинеарность или другие численные задачи.


r_squared = fittedModel.rsquared
###Конечный код(приблизительно 1 строка)
с открытым("output.txt", "w") в виде text_file:
текстовый файл.писать("Корр= %ф\п"% corr_value)
текстовый файл.write("rsquared= %f\n" % r_squared)



TypeError                                 Traceback (most recent call last)
<ipython-input-11-b55e673c78db> in <module>()
      3 ###End code(approx 1 line)
      4 with open("output.txt", "w") as text_file:
----> 5     text_file.write("corr= %f\n" % corr_value)
      6     text_file.write("rsquared= %f\n" % r_squared)

TypeError: float argument required, not DataFrame


Что я уже пробовал:

text_file.write("corr= %f\n"

Richard MacCutchan

Последняя строка в вашем примере кода является неполной. Также вы не объяснили, какая строка кода выдает ошибку.

Member 13895806

Теперь я обновил детали. Следующие строки выдают ошибку

----> 5 text_file.писать("Корр= %ф\п" % corr_value)

Richard MacCutchan

Я не знаю, из какого примера вы это скопировали, но это даже не похоже на действительный оператор Python. Если вы хотите использовать форматированный вывод, то см. 7. ввод и вывод — документация Python 3.7.0[^]

1 Ответов

Рейтинг:
2

Jochen Arndt

Ошибка совершенно очевидна:
corr_value иметь тип DataFrame в то время как формат "%f" требует, чтобы аргумент имел тип float.

Даже комментарий в вашем коде гласит, что corr() функция вычисляет матрица и вы должны использовать это, чтобы определить значение корреляции.

Я не могу ответить, как это сделать, потому что я не знаю, что делают функции, как организована эта матрица и что представляют собой члены.