Tensorflow – 我尝试预测价格时得到不准确的预测、NaN和无限值

我最近开始学习Tensorflow,并设法编写了一些简单的代码来预测房价。我是机器学习的新手,因此还有很多需要学习的地方,这就是为什么我需要您的帮助。该程序的预测不准确,而且当我尝试使用均方误差(MSE)而不是交叉熵(Cross entropy)来最小化损失时,我得到了NaN和无限值。您能告诉我我犯了什么错误吗?

这是我的代码:

import tensorflow as tfimport numpy as npimport pandas as pdfrom sklearn.metrics import mean_squared_errorLEARNING_RATE = 0.003home_input = pd.read_csv("kc_house_data.csv")features = ["bedrooms", "bathrooms", "sqft_living", "sqft_lot", "floors", "waterfront", "view", "condition", "grade", "sqft_above", "sqft_basement", "yr_built", "yr_renovated", "zipcode", "lat", "long", "sqft_living15", "sqft_lot15"]label = ["price"]X = tf.placeholder(tf.float32, [None, 18])Y = tf.placeholder(tf.float32, [None, 1])W = tf.Variable(tf.ones([18, 1]))b = tf.Variable(1.)Y_ = tf.matmul(X, W) + bcross_entropy = -tf.reduce_sum(Y*tf.log(Y_))loss = tf.reduce_sum(tf.square(Y_ - Y))optimizer = tf.train.GradientDescentOptimizer(LEARNING_RATE)train = optimizer.minimize(loss)init = tf.global_variables_initializer()with tf.Session() as sess:    sess.run(init)    j = 1    for i in range(1000):        j = i * 10        x_data = np.array(home_input[features][j:(j+10)])        y_data = np.array(home_input[label][j:(j+10)])        sess.run(train, feed_dict={X: x_data, Y: y_data})        print(sess.run(Y_, feed_dict={X: x_data, Y: y_data}))

回答:

标准化您的数据,然后将其传递给您的网络可以解决这个问题。为此,StandardScalerMinMaxScaler 可能会对您有所帮助。

from sklearn.preprocessing import StandardScalerdata = [[0, 0], [0, 0], [1, 1], [1, 1]]scaler = StandardScaler()new_data = scaler.fit_transform(data)...# feed new_data to the neural network

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注