零基础学机器学习--第一天

加州房价预测----无特征工程和数据预处理

import pandas as pd

df_housing = pd.read_csv("https://raw.githubusercontent.com/huangjia2019/house/master/house.csv")
df_housing.to_csv("../house.csv")

# '''可以提前下到该路径下面'''
# df_housing = pd.read_csv("../house.csv")

x = df_housing.drop("median_house_value", axis= 1) # 构建特征集 X
y = df_housing.median_house_value # 构建标签集 Y

from sklearn.model_selection import train_test_split # 导入sklearn 工具库
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size= 0.2, random_state=0 )  # 数据集的拆分

from sklearn.linear_model import  LinearRegression # 导入线性回归算法模型
model = LinearRegression() # 确定线性回归算法
model.fit(X_train, y_train) # 根据训练集数据, 训练机器, 拟合函数

y_pred = model.predict(X_test)

print('房价的真值(测试值):')
# y_test是Series 有索引
print(y_test.values)
print('预测的房价(测试值):')
print(y_pred)

print("给预测评分:", model.score(X_test, y_test))

import matplotlib.pyplot as plt
# 用散点图显示家庭收入中位数和房价中位数的分布
plt.scatter(X_test.median_income, y_test, color = 'brown')

# 画出回归函数(从特征到预测标签)
plt.plot(X_test.median_income, y_pred, color = 'green', linewidth = 1)
plt.xlabel("Median Income")
plt.ylabel("Median House Value")
plt.show()

Keras自带MNIST数据集——手写数字灰度图像分类

import numpy as np
import pandas as pd
from keras.datasets import mnist
# 读入训练集和测试集
(X_train_image, y_train_lable), (X_test_image, y_test_lable) = mnist.load_data()

print("数据集张量形状:", X_train_image.shape)
# print(X_test_image.shape) ——10000
print("第一个数据样本:\n", X_train_image[0])
print("第一个数据样本的标签:", y_train_lable[0])

from keras.utils import  to_categorical # 导入类别转换工具

X_train = X_train_image.reshape(60000, 28, 28, 1) # 给标签增加一个维度
X_test = X_test_image.reshape(10000, 28, 28, 1)

y_train = to_categorical(y_train_lable, 10)  # 特征转换为one-hot 编码
y_test = to_categorical(y_test_lable, 10)

print("训练集张量形状:", X_train.shape)
print("第一个数据标签:", y_train[0])

from keras import models # 导入Keras模型, 以及各种神经网络的层
from keras .layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
model = models.Sequential() # 用序贯方式建立模型
model.add(Conv2D(32, (3, 3), activation= 'relu', # 添加Conv2D层
          input_shape= (28, 28, 1))) # 指定输入数据样本张量的类型
model.add(MaxPooling2D(pool_size= (2, 2)))  # 添加MaxPooling2D层
model.add(Conv2D(64, (3, 3), activation= 'relu')) # 添加Conv2D层
model.add(MaxPooling2D(pool_size= (2, 2))) # 添加MaxPooling2D层
model.add(Dropout(0.25)) # 添加Dropout层
model.add(Flatten()) # 展平
model.add(Dense(128, activation= 'relu')) # 添加全连接层
model.add(Dropout(0.5)) # 添加Dropout层
model.add(Dense(10, activation='softmax')) # Softmax 分类激活, 输出10维分类码
# 编译模型
model.compile(optimizer= 'rmsprop', # 指定优化器
              loss= 'categorical_crossentropy', # 指定损失函数
              metrics= ['accuracy']) # 指定验证过程中的评估指标
# This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
# To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags. 这只是在告诉您它可以并且将会利用您的 CPU 来获得额外的速度

model.fit(X_train, y_train,  # 指定训练特征集和训练标签集
          validation_split= 0.3,  # 部分训练集数据拆分成验证集
          epochs= 5, # 训练轮次为5轮
          batch_size= 128 # 以128为批量进行训练
          )

score = model.evaluate(X_test, y_test) # 在测试集上进行模型评估
print("测试集预测准确率:", score[1])  # score 返回损失值和选定的指标值

'''对于数据集的规模比较小或者模型的性能很不稳定的情况下————K折验证
除去预留独立的测试集,将数据划分为大小相同的K个分区,对于每个分区,都在剩余的K-1个分区上训练模型,然后在留下的分区上评估模型'''

# 查看预测结果
pred = model.predict(X_test[0].reshape(1, 28, 28, 1))  # 预测测试集第一个数据
print(pred[0], "转换一下格式得到:", pred.argmax())  # 把ont-hot 编码转换为数字

import matplotlib.pyplot as plt # 导入绘图工具包
import pylab
plt.imshow(X_test[0].reshape(28, 28), cmap='Greys') # 输出这个图片
pylab.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值