python学习总结

1.机器学习sklearn

(1)sklearn ,全称为 Scikit-Learn是基于 Python 语言的机器学习工具,是机器学习中一个常用的python第三方模块,Sklea是处理机器学习 (有监督学习和无监督学习) 的包。

sklearn有七个模块,分为六个任务模块和一个数据引入模块:

有监督学习的分类任务、回归任务,无监督学习的聚类任务、降维任务,数据预处理任务、模型选择任务和数据引入。

(2)数据集

  1. 获取小数据:load_dataname
  2. 获取大数据:fetch_dataname
  3. 构造随机数据: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)

感觉自己学得还是挺浅的。
 

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值