tensorflow 的含义
tensor的英文含义为张量,可以理解为一个任意维的矩阵,一个可以进行GPU计算的矩阵,tensorflow表示为对矩阵进行计算。
简单操作
import tensorflow as tf
import numpy as np
#检查tensorflow版本
tf.__version__
2.8.0
x=[[1.]]
m=tf.matmul(x,x)#将矩阵 a 乘以矩阵 b,生成a * b
print(m)
tf.Tensor([[1.]], shape=(1, 1), dtype=float32)
x=tf.constant([[1,9],[3,6]])
tf.Tensor(
[[1 9]
[3 6]], shape=(2, 2), dtype=int32)
x=tf.add(x,1)
tf.Tensor(
[[ 2 10]
[ 4 7]], shape=(2, 2), dtype=int32)
转换格式
x.numpy()
[[ 2 10]
[ 4 7]]
x=tf.cast(x,tf.float32)#格式转换为浮点
tf.Tensor(
[[ 2. 10.]
[ 4. 7.]], shape=(2, 2), dtype=float32)
回归问题预测
在tensorflow2中将大量使用keras的简介建模方法
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.python.keras import layers
import tensorflow.python.keras
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
使用的是一个温度的数据集来进行实验
features = pd.read_csv('temps0.csv')
print(features.head())
year month day week temp_2 temp_1 average friend
0 2016 1 1 Fri 45 45 45.6 29
1 2016 1 2 Sat 44 45 45.7 61
2 2016 1 3 Sun 45 44 45.8 56
3 2016 1 4 Mon 44 41 45.9 53
4 2016 1 5 Tues 41 40 46.0 41
print("数据维度",features.shape)
数据维度 (348, 8)
处理时间数据
import datetime
years=features['year']
months=features['month']
days=features['day']
#datatime格式
dates=[str(int(year))+'-'+str(int(month))+'-'+str(int(day)) for year ,month ,day in zip(years,months,days)]
dates=[datetime.datetime.strptime(date,'%Y-%m-%d')for date in dates]
print(dates[:5])
[datetime.datetime(2016, 1, 1, 0, 0), datetime.datetime(2016, 1, 2, 0, 0), datetime.datetime(2016, 1, 3, 0, 0), datetime.datetime(2016, 1, 4, 0, 0), datetime.datetime(2016, 1, 5, 0, 0)]
准备画图,再次之间要进行数据处理,删除异常数据,清洗数据等。
#将所有信息转为数字信息
features=pd.get_dummies(features)
print(features.head(5))
year month day temp_2 ... week_Sun week_Thurs week_Tues week_Wed
0 2016 1 1 45 ... 0 0 0 0
1 2016 1 2 44 ... 0 0 0 0
2 2016 1 3 45 ... 1 0 0 0
3 2016 1 4 44 ... 0 0 0 0
4 2016 1 5 41 ... 0 0 1 0
[5 rows x 14 columns]
#标签值
#去除特征中的标签
features=features.drop('actual',axis=1)
#名字单独保存一下,
features_list=list(features.columns)
#转换成合适的格式
features=np.array(features)
print(features.shape)
(348, 14)
进行归一化操作
from sklearn import preprocessing
input_features=preprocessing.StandardScaler().fit_transform(features)
print(input_features[0])
基于Keras构建网络模型
一些常用的参数
model=tf.keras.Sequential()
model.add(layers.Dense(16))#全连接层
model.add(layers.Dense(32))
model.add(layers.Dense(1))
compile相当于对网络进行配置,指定好优化器和损失函数等
model.compile(optimizer=tf.keras.optimizers.SGD(0.001),loss='mean_squared_error')
model.fit(input_features,labels,validation_split=0.25,epochs=10,batch_size=64)