python-3.x - 为什么用 -9999 替换缺失值?
问题描述
带有 numpy 的线性回归模型的代码:
from statistics import mean
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import random
from sklearn.linear_model import LinearRegression
def create_dataset(hm, variance, step=2, correlation=False):
val = 1
ys = []
for i in range(hm):
y = val + random.randrange(-variance, variance)
ys.append(y)
if correlation and correlation == 'pos':
val += step
elif correlation and correlation == 'meg':
val -= step
xs = [i for i in range(len(ys))]
return np.array(xs, dtype=np.float64), np.array(ys, dtype=np.float64)
def best_fit_slope_and_intercept(X, y):
x_mean = mean(X)
y_mean = mean(y)
gradient_calc1 = x_mean * y_mean - mean(X * y)
gradient_calc2 = x_mean ** 2 - mean(X ** 2)
gradient = gradient_calc1 / gradient_calc2
intercept = y_mean - gradient * x_mean
return gradient, intercept
def r_squared(gradient, intercept, xs, ys):
the_mean = mean(ys)
regression_y = [gradient * x + intercept for x in xs]
total_error = (abs(ys - the_mean) ** 2).sum()
explained_error = (abs(ys - regression_y) ** 2).sum()
return 1 - explained_error / total_error
xs, ys = create_dataset(100, 1000, 10, 'pos')
m, b = best_fit_slope_and_intercept(xs, ys)
regression_line = [m * x + b for x in xs]
regressor = LinearRegression()
regressor.fit(xs.reshape(-1, 1), ys)
prediction = regressor.predict(xs.reshape(-1, 1))
print(r_squared(m, b, xs, ys))
plt.scatter((xs), ys)
plt.plot(xs, regression_line)
plt.plot(xs, prediction)
plt.show()
- 参考这个,任何人都可以告诉我为什么我应该用 -9999 替换缺失值,就像 senddex 在他的教程中所做的那样?
对此,senddex表示大多数算法都将此类输入识别为异常值?是否有特定的处理方法或数学是否可以防止异常值对回归产生负面影响。
- 这是机器学习库中用于实现线性回归的方法还是使用了其他概念。
从头开始线性回归的视频:https ://www.youtube.com/watch?v=QUyAFokOmow&list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v&index=11
解决方案
- 将所有缺失值替换为 0 或 -9999 有助于删除 NaN 数,从而有助于以更高的效率对数据集进行标准化(如果 ,则对数据集进行标准化)。此外,将 NaN 数字设置为 -9999 有助于您的代码将该值视为异常值。点击这里查看更多信息 !
- 是的,线性回归是机器学习中使用的一种方法。还有很多其他的过程,比如决策树!
推荐阅读
- go - 如何调用此调用?
- matlab - 获取一个 .m 文件的值并使用这些值在 MATLAB GUI 中绘图
- python - 在执行 stats.ttest_ind 时为 /: 'str' 和 'int' 键入错误不支持的操作数类型
- python - 如何根据Python中的不同行索引取平均值
- batch-file - 批处理文件的 Switch-Case
- java - 爪哇。根据时区名称将 EDT、CDT、CST 等时区的时间转换为 UTC
- php - 如何为控制器编写可测试的代码
- performance - Cosmos CreateDocumentQuery linq 在 where 条件下的性能
- linux - 用于轮询 SFTP 目录的 Bash 脚本
- r - 有没有办法在 python 或 R 中的字符串上应用转换矩阵?