1.机器学习sklearn
(1)sklearn ,全称为 Scikit-Learn是基于 Python 语言的机器学习工具,是机器学习中一个常用的python第三方模块,Sklea是处理机器学习 (有监督学习和无监督学习) 的包。
sklearn有七个模块,分为六个任务模块和一个数据引入模块:
有监督学习的分类任务、回归任务,无监督学习的聚类任务、降维任务,数据预处理任务、模型选择任务和数据引入。
(2)数据集
- 获取小数据:load_dataname
- 获取大数据:fetch_dataname
- 构造随机数据:make_dataname
例 引入数据集
digits=datasets.load_digits()
digits.keys()
sklearn本身也提供了几个常见的数据集,如diabetes, digits, covtype, kddcup99, boson等
数据的大小 = [样本数, 特征数],获取数据与标签,例:
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
(3)API
1.估计器:拟合器把它当成一个模型,基于数据集对一些参数进行估计。
2. 预测器是具有预测功能的估计器
3.转换器是具有转换功能的估计器
有监督:model.fit( X_train, y_train )
无监督:model.fit( X_train )
predict()函数
from sklearn.linear_model import LogisticRegression
model=LogisticRegression(solver='lbfgs',multi_class='multinomial')
model.fit(x_train,y_train)
#注意predict是预测的类别,predict_proba是只预测的准确度。predict:训练后返回预测结果,显示标签值,predict_proba:返回一个 n 行 k 列的数组, 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,并且每一行的概率和为1。
y_pred=model.predict(x_text)
p_pred=model.predict_proba(x_text)
print(y_test,'\n')
print(y_pred,'\n')
print(p_pred,'\n')
一个线性回归:
import numpy as np
from sklearn.linear_model import LinearRegression
# 样本数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])
# 创建线性回归模型对象
model = LinearRegression()
# 使用样本数据拟合模型
model.fit(X, y)
# 预测新数据
X_new = np.array([[6], [7]])
y_pred = model.predict(X_new)
print("预测结果:", y_pred)
2.Pytorch
PyTorch是由Facebook AI研究院开发的Python深度学习框架,是目前最流行的深度学习框架之一。它通过动态计算图的方式实现了神经网络的构建和优化,同时能够高效地利用GPU进行计算加速。
(1)Tensor是PyTorch中最基本的数据结构,是一个多维数组或者矩阵
# 创建一个未初始化的3x2矩阵
x = torch.empty(3, 2)
print(x)
# 创建一个随机初始化的3x2矩阵
x = torch.rand(3, 2)
print(x)
# 创建一个3x2的零矩阵,类型为long
x = torch.zeros(3, 2, dtype=torch.long)
print(x)
# 直接从数据创建tensor
x = torch.tensor([3, 2])
print(x)
(2)神经网络
import torch
import torch.nn as nn
import torch.optim as optim
# 定义一个6层的全连接神经网络模型
class NeuralNetwork(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(NeuralNetwork, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, hidden_size)
self.fc3 = nn.Linear(hidden_size, hidden_size)
self.fc4 = nn.Linear(hidden_size, hidden_size)
self.fc5 = nn.Linear(hidden_size, hidden_size)
self.fc6 = nn.Linear(hidden_size, output_size)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
x = torch.relu(self.fc3(x))
x = torch.relu(self.fc4(x))
x = torch.relu(self.fc5(x))
x = self.fc6(x)
return x
# 定义输入维度,隐藏层维度和输出维度
input_size = 10
hidden_size = 20
output_size = 5
# 创建神经网络模型
model = NeuralNetwork(input_size, hidden_size, output_size)
# 定义损失函数和优化器,在训练神经网络的过程中,要定义损失函数和优化器。
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 打印模型结构
print(model)
# 通过模型进行前向传播计算
input_data = torch.randn(3, input_size)
output = model(input_data)
print("Output shape:", output.shape)
(3)数据的加载和处理
PyTorch提供了torch.utils.data.DataLoader
类,进行数据的加载和处理。
DataLoader
常用的参数有:
-
dataset:要加载的数据集对象
-
batch_size:batch大小
-
shuffle:是否每个epoch时都打乱数据
-
num_workers:使用多进程加载的进程数,0表示不使用多进程
可以自定义数据集,自定义数据集需要继承Dataset
类,并实现__len__
和__getitem__
两个方法。
import torch
from torch.utils.data import DataLoader, Dataset
# 自定义Dataset类
class CustomDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, index):
x = self.data[index][0]
y = self.data[index][1]
return x, y
# 假设有一个数据集,包含10个样本,每个样本是一个元组,包含输入和标签
data = [(torch.randn(5), torch.randint(0, 2, (1,))) for _ in range(10)]
# 创建自定义Dataset对象
dataset = CustomDataset(data)
# 使用DataLoader加载数据集
batch_size = 2
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)
# 遍历数据集
for inputs, labels in dataloader:
print("Batch inputs shape:", inputs.shape)
print("Batch labels shape:", labels.shape)
感觉自己学得还是挺浅的。