首页 > 解决方案 > 为什么用 -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()
  1. 参考这个,任何人都可以告诉我为什么我应该用 -9999 替换缺失值,就像 senddex 在他的教程中所做的那样?

对此,senddex表示大多数算法都将此类输入识别为异常值?是否有特定的处理方法或数学是否可以防止异常值对回归产生负面影响。

  1. 这是机器学习库中用于实现线性回归的方法还是使用了其他概念。

从头开始线性回归的视频:https ://www.youtube.com/watch?v=QUyAFokOmow&list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v&index=11

标签: python-3.xlinear-regressionmissing-data

解决方案


  1. 将所有缺失值替换为 0 或 -9999 有助于删除 NaN 数,从而有助于以更高的效率对数据集进行标准化(如果 ,则对数据集进行标准化)。此外,将 NaN 数字设置为 -9999 有助于您的代码将该值视为异常值。点击这里查看更多信息 !
  2. 是的,线性回归是机器学习中使用的一种方法。还有很多其他的过程,比如决策树!

推荐阅读