【发布时间】:2021-06-24 07:18:55
【问题描述】:
我正在尝试在 python 中创建一个程序,该程序使用机器学习来预测数字的平方根。我列出了我在程序中所做的一切:-
- 创建了一个包含数字及其正方形的 csv 文件
- 从 csv 中提取数据到合适的变量中(X 存储正方形,y 存储数字)
- 使用 sklearn 的 StandardScaler 缩放数据
- 构建了具有两个隐藏层的 ANN,每个隐藏层 6 个单元(无激活函数)
- 使用 SGD 作为优化器和均方误差作为损失函数来编译 ANN
- 训练了模型。损失约为 0.063
- 尝试过预测,但结果却是另一回事。
我的实际代码:-
import numpy as np
import tensorflow as tf
import pandas as pd
df = pd.read_csv('CSV/SQUARE-ROOT.csv')
X = df.iloc[:, 1].values
X = X.reshape(-1, 1)
y = df.iloc[:, 0].values
y = y.reshape(-1, 1)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0, test_size=0.2)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_test_sc = sc.fit_transform(X_test)
X_train_sc = sc.fit_transform(X_train)
sc1 = StandardScaler()
y_test_sc1 = sc1.fit_transform(y_test)
y_train_sc1 = sc1.fit_transform(y_train)
ann = tf.keras.models.Sequential()
ann.add(tf.keras.layers.Dense(units=6))
ann.add(tf.keras.layers.Dense(units=6))
ann.add(tf.keras.layers.Dense(units=1))
ann.compile(optimizer='SGD', loss=tf.keras.losses.MeanSquaredError())
ann.fit(x = X_train_sc, y = y_train_sc1, batch_size=5, epochs = 100)
print(sc.inverse_transform(ann.predict(sc.fit_transform([[144]]))))
输出:- array([[143.99747]], dtype=float32)
输出不应该是 12 吗?为什么它给我错误的结果?
我还附上了我用来训练我的模型的 csv 文件:SQUARE-ROOT.csv
【问题讨论】:
-
如果你使用机器学习,它不是预测。它正在计算(假设你的训练是正确的)。因为机器学习算法包括“预测”的数学指标,使其本质上是计算。
-
我还是这个领域的初学者。如果我搞砸了条款,我真的很抱歉:(我认为我的训练是适当的,因为产生的损失很低。我不知道我在这方面是否正确。如果我错了,请纠正我。
-
不,您使用的术语是准确的。我的意思是机器学习如何在后端工作。对于数学的东西,它计算而不是预测。但是,是的,用于触发它的函数称为“预测”,所以你是对的。
标签: python tensorflow machine-learning keras neural-network