python - 无法将类型“ndarray”转换为分子/分母
问题描述
这是我为实现linear_regression而制作的一个类
from statistics import mean
import numpy as np
xs = np.array([1,2,3],dtype = float)
ys = np.array([2,5,6],dtype = float)
class Linear_Regression(): # Our own linear regression Model
def __init__(self):
print("The model is ready for use")
def best_fit_slope_intercept(self,xs,ys): # for finding best fit slope(m) and intercept(c)
self.m = ( ( mean(xs) * mean(ys) -mean(xs*ys) ) / ( pow(mean(xs),2) - mean(pow(xs,2)) ) ) # For slope (m)
self.c = mean(ys) - self.m * mean(xs) # For y-intercept(c)
def fit(self,xs,ys):
self.best_fit_slope_intercept(xs,ys)
self.regression_line = [((self.m)*x)+ (self.c) for x in xs]
print("Model fitting completed")
return self.regression_line # Returns the fitted values (ys_line) for each input (xs)
def squared_error(self,ys_orig, ys_line): # Calculates the mean squared error between y_orig and y_line
return sum((ys_line-ys_orig)**2) # N.B. ys_orig = ys , ys_line = self.regression_line
def score(self,ys_orig,ys_line):
y_mean_line = [mean(ys_orig) for y in ys_orig]
sqr_err_reg = self.squared_error(ys_orig, ys_line)
sqr_err_y_mean = self.squared_error(ys_orig, y_mean_line)
return 1- (sqr_err_reg / sqr_err_y_mean )
def predict(self,x_testing):
s = self.m *(x_testing) + self.c
return s
regr = Linear_Regression()
regr.best_fit_slope_intercept(xs,ys)
执行此代码后,我收到此错误:
TypeError: can't convert type 'ndarray' to numerator/denominator
虽然如果我在类之外创建这些函数,代码运行良好。我真的无法解决问题!
解决方案
@deepraj1729,在使用前将数据展平statistics.mean()
。
例如:
改变:
self.c = mean(ys) - self.m * mean(xs)
至:
self.c = mean(ys.flatten()) - self.m * mean(xs.flatten())
希望这可以帮助。
推荐阅读
- java - org.postgresql.util.PSQLException:错误:列“check_state”的类型为 check_state,但表达式的类型为字符变化
- python - 多处理、线程卡住、打印输出混乱
- r - 在 R 编程中,关于循环
- nginx - 运行没有 minikube 等的 kubernetes 容器
- python-3.x - 将 Zoom Recordings 下载到本地计算机并使用 Resumable Upload Method 将视频上传到 Google Drive
- node.js - 无法弄清楚为什么 docker compose up 没有运行我的 React JS 应用程序
- javascript - 电子表格中的最大脚本数
- ruby-on-rails - Rails:为什么我会失去关联?
- promise - 使用 Storyblok-nuxt 发送多个 .get() 请求
- javascript - 如何从具有多个对象的平面列表中设置和获取不同的状态和输入