如何解决我无法运行线性回归和交叉验证有人可以启发我吗?我收到错误,例如无法将字符串转换为浮点数
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from statsmodels.formula.api import ols
import statsmodels.api as sm
import scipy
import scipy.stats
import seaborn as sns
import numpy.random as npr
import math
from scipy.stats import norm
import sqlite3 as sql
import seaborn
from numba import jit,prange
df = pd.read_csv('ODI-2021.edited.csv')
df.info()
sr_targets = pd.Series(df['What is your stress level (0-100)?'])
sr_targets.describe()
df_features = df.drop('What is your stress level (0-100)?',axis=1)
print (df_features)
df_features.describe()
from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
df.isnull().sum()
df_missing = df.dropna()
df_missing.shape
X = df["What is your stress level (0-100)?"]
y = df["Time you went to be Yesterday"]
est = sm.OLS(y,X.astype(float)).fit()
model = sm.OLS(y,X).fit()
predictions = model.predict(X)
-ValueError: Could not convert string to float: 'over 9000'
model.summary()
-AttributeError: 'LinearRegression' object has no attribute 'summary'
from sklearn import preprocessing
def convert(df):
number = preprocessing.LabelEncoder()
data['Date'] = number.fit_transform(df['Date'])
data=data.fillna(-999)
return data
model = LinearRegression(fit_intercept=True)
result = model.fit(df_features,sr_targets)
-ValueError: Could not convert string to float: '3/16/2021'
sr_coef = pd.Series(result.coef_,index=df_features.columns)
sr_coef
-NameError: name 'result' is not defined
sr_endog = sr_targets.copy()
df_exog = sm.add_constant(df_features)
model = sm.OLS(sr_endog,df_exog)
result = model.fit()
-ValueError: Pandas data cast to numpy dtype of object. Check input data with
np.asarray(data)
result.summary()
-NameError: name 'result' is not defined
cross validation
from sklearn.linear_model import LassoCV
from sklearn.model_selection import Fold
nb_folds = 10
cv = KFold(n_splits=nb_folds)
model = LassoCV(fit_intercept=True,cv=cv,n_alphas=200,max_iter=2000)
result = model.fit(df_features_rescaled,sr_targets)
-NameError: name 'df_features_rescaled' is not defined
fig = plt.figure(figsize=[16,15])
xvalues = np.log10(result.alphas_)
rmse_path = np.sqrt(result.mse_path_)
for k in range (nb_folds):
yvalues = rmse_path[:,k]
plt.plot(xvalues,yvalues)
pos_ymin = yvalues.argmin()
plt.plot(xvalues[pos_ymin],yvalues[pos_ymin],marker='o')
plt.axvline(np.log10(result.alpha_))
plt.title('RMSE for differebt alpha',fontsize=20)
plt.grid()
-NameError: name 'result' is not define
sr_coef = pd.Series(result.coef_,index=df_features.columns)
sr_coef
这是我的代码,这些是我得到的错误,有人可以帮我解决我做错了什么吗?我已经查找了错误,但我不知道如何解决这些错误。我的数据集有数字,但也有日期和答案,例如是,否和大学水平的教育水平反应,我不知道如何在浮点数中进行转换。我一直在尝试使用由数字组成的两列运行回归,但出现错误。对于交叉验证,我删除一列,我使用其余列,我收到错误,我没有定义我拥有的变量结果,我一无所知
3.提前致谢!
解决方法
你的每一个错误都有意义。学会阅读错误对于理解正在发生的事情非常重要。例如,
est = sm.OLS(y,X.astype(float)).fit()
model = sm.OLS(y,X).fit()
predictions = model.predict(X)
-ValueError: could not convert string to float: 'over 9000'
这似乎表明有人在您打开的 CSV 文件的单元格中放置了短语“超过 9000”。因此,python 无法弄清楚如何将其转换为浮点数。如果您尝试运行,也会发生同样的事情
float("over 9000")
看来数据需要稍微清理一下才能被你的sm使用。看来 python 也试图在这里告诉你同样的事情:
-ValueError: could not convert string to float: '3/16/2021'
字符串“3/16/2021”包含不属于 float() 的符号,即“/”符号。
我认为,如果您将错误和顾虑分解为单独的问题,那么人们可以一次为您解决一个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。