как сделать вывод настолько реальным, насколько я могу, после изменения масштаба данных, чтобы сделать регрессию - PullRequest
1 голос
/ 30 июня 2019

После того, как я пересчитал данные, данные стали слишком маленькими, и это заставило меня использовать их лучше

Но после этого мне нужен вывод, и вывод стал слишком маленьким, и если я попытаюсь сделать вывод, как это -

(output=output*real output.std()+ real output.mean())

будет большая разница между выводом, который я хочу, и выводом, полученным из кода. Поэтому мне нужен способ приблизить вывод к реальному вывод

Вот несколько примеров немасштабированных данных:

реал из кода

399900 356029

329900 286322

369000 396967

и это после изменения масштаба:

реальный из кода

0,47574 0,12489

-0,08407 -0,43258

извините за мой плохой английский, но мне больше некому помочь

import numpy as np
import pandas as pd
def computeCost(X, y, theta):
    inner = np.power(((X * theta.T) - y), 2)
    return np.sum(inner) / (2 * len(X))

def gradientDescent(X, y, theta, alpha, iters):
    temp = np.matrix(np.zeros(theta.shape))
    parameters = int(theta.ravel().shape[1])
    cost = np.zeros(iters)

    for i in range(iters):
        error = (X * theta.T) - y

        for j in range(parameters):
            term = np.multiply(error, X[:,j])
            temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term))

        theta = temp
        cost[i] = computeCost(X, y, theta)

    return theta, cost

#=============================================================

#read data    
path2 = 'D:\\New folder (4)\\03.txt'
data2 = pd.read_csv(path2, header=None, names=['Size', 'Bedrooms', 'Price'])
# rescaling data
m=data2['Price'].mean()
s=data2['Price'].std()
data2 = (data2 - data2.mean()) / data2.std()
# add ones column
data2.insert(0, 'Ones', 1)

# separate X (training data) from y (target variable)
cols = data2.shape[1]
X2 = data2.iloc[:,0:cols-1]
y2 = data2.iloc[:,cols-1:cols]
# convert to matrices and initialize theta
X2 = np.matrix(X2.values)
y2 = np.matrix(y2.values)
theta2 = np.matrix(np.array([0,0,0]))
# initialize variables for learning rate and iterations
alpha = 0.1
iters = 100
# perform linear regression on the data set
g2, cost2 = gradientDescent(X2, y2, theta2, alpha, iters)
y1=X2*g2.T
print(y1)
print(y1*s+m)
...