IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021.7.23 机器学习——记录 -> 正文阅读

[人工智能]2021.7.23 机器学习——记录

? ? ? ? 今天学习课程第二节,进行如下记录。

? ? ? ? 1. 实现了图像转矩阵,理解了矩阵与图像的相关关系

? ? ? ? 2. 使用python实现了一些初步的操作,利用numpy画圆以及同心圆,求随机数等,对python代码有了熟练的使用,以及如何去绘制函数,实现了一些数学函数图像绘制

? ? ? ? 3. 数据清洗和特征选择。一般使用pandas处理数据,fuzztwuzzy、模糊查询与替换。首先要先进行数据预处理,找出数据中的异常值.

? ? ? ? 4. 实现了程序,环形路段车辆堵车模拟。

? ? ? ? 模型假设如下:

????????路面上有n辆车,以不同的速度向前行驶, 模拟堵车问题。
????????有以下假设:
????????假设道路为环形封闭,即路面上的车不会少,也不会多,外面的车进不来,里面的也出不去。
????????某辆车的当前速度是v。
????????若前方可见范围内没车(即d>v),则它在下一秒的车速提高到v+1,直到达到规定的最高限速。
????????若前方有车,前车的距离为d,若d < v,则它下一秒的车速降低到d-1 ,若d=v,则速度不变。
????????每辆车会以概率p随机减速v-1。

具体代码如下:(代码转载于https://blog.csdn.net/weixin_44457930/article/details/115797612

#!usr/bin/env python
# -*- coding:utf-8 -*-
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt


# 对车辆的位移进行限制,当大于水平的公路长度时,则认为是该车进入了下一圈
def clip(x, path):
    for i in range(len(x)):
        if x[i] >= path:
            x[i] %= path


if __name__ == "__main__":

    # 文字转化
    mpl.rcParams['font.sans-serif'] = [u'SimHei']
    mpl.rcParams['axes.unicode_minus'] = False

    '''初始化定义'''
    path = 5000  # 环形公路的长度
    n = 100  # 公路中的车辆数目
    v0 = 50  # 车辆的初始速度
    p = 0.3  # 随机减速概率
    Times = 1000  # 模拟时间

    '''模拟车辆的位移和速度'''
    np.random.seed(0)

    # 模拟100辆车辆的位置
    # np.random.rand(n)返回的是n个0-1之间均匀分布的随机数
    x = np.random.rand(n) * path

    # 根据车辆的位置进行排序,原地替换
    x.sort()

    # 将所有车辆的初速度定义为50,并设为float类型数据
    v = np.tile([v0], n).astype(np.float)

    '''画布大小'''
    plt.figure(figsize=(8, 6))

    '''模拟在时间范围内的堵车情况'''
    for t in range(Times):
        # 根据第t时刻每辆车的位置绘图
        # x:车辆位置    [t]*n:时间,因为要保持横纵坐标的长度要相同
        plt.scatter(x, [t] * n, s=1, c='b', alpha=0.05) # alpha表示点的透明度

        '''计算每辆车第t时刻的速度和第t+1时刻的位置'''
        for i in range(n):

            # 计算前后车辆的距离
            # 对于最后一辆车,即 x[n-1],它的前一辆车是 x[n]
            # 但 x[n]会发生索引越界,因此使用 x[(i + 1) % n]代替 x[i+1]
            if x[(i + 1) % n] > x[i]:
                # 判断x[(i + 1) % n] > x[i],是为了判断前面的车是否已经进入下一圈
                # 因为假定没有超车的情况发生,因此前面的车,永远在前面
                d = x[(i + 1) % n] - x[i]
            else:
                d = x[(i + 1) % n] + path - x[i]

            '''根据与前车的距离调整速度'''
            if v[i] < d:
                # v[i] < d 表示前方可见范围没车
                # 若前方可见范围内没车,则它在下一秒的车速提高到v+1,直到达到规定的最高限速。
                # 同时,每辆车会以概率p随机减速v-1。
                if np.random.rand() > p:
                    v[i] += 1
                else:
                    v[i] -= 1
            elif v[i] > d:
                # 若前方有车,前车的距离为d,且d < v,则它下一秒的车速降低到d-1 。
                v[i] = d - 1

            # 还有一种情况,若v[i] = d,则第 i 辆车的速度不做调整

        # 限制速度,v<0,则将v定义为0;v>150,则将v定义为150
        v = v.clip(0, 150)

        # 车辆的位移在增加,车在往前开
        x += v

        # 调用clip,因为公路是环形封闭的,有些车已经进入下一圈了
        clip(x, path)

    '''限制坐标轴'''
    # 对x轴的坐标进行限制
    plt.xlim(0, path)
    # 对y轴坐标进行限制
    plt.ylim(0, Times)

    '''标签'''
    # 后面字符串以 Unicode 格式进行编码,一般用在中文字符串前面,
    # 防止因为源码储存格式问题,导致再次使用时出现乱码。
    # Python2.7需要在中文字符串前面加u,否则报错,Python3.X不需要
    plt.xlabel(u'车辆位置', fontsize=16)    # fontsize表示字体大小
    plt.ylabel(u'模拟时间', fontsize=16)
    plt.title(u'环形公路车辆堵车模拟', fontsize=20)

    '''自动调整子图参数,使之填充整个图像区域'''
    plt.tight_layout(pad=2)

    '''画图'''
    plt.show()

做如下几个测试用例:

(1)当随即减速概率为默认的0.3时,预测情况如下:

可以看出,时间刚开始时,堵车会比较频繁,而车辆位置越在后面,其堵车的频率也更为频繁。

(2)当设置p=0.15时?

可以看到,此时随着时间增加,车流量趋于平稳

(3)设置p=0.6时:

?

?5. 实现机器学习数据清洗

#!/usr/bin/python
# -*- encoding: utf-8

import numpy as np
import pandas as pd
from fuzzywuzzy import fuzz
from fuzzywuzzy import process


def enum_row(row):
    print(row['state'])


def find_state_code(row):
    if row['state'] != 0:
        print(process.extractOne(row['state'], states, score_cutoff=80))


def capital(str):
    return str.capitalize()


def correct_state(row):
    if row['state'] != 0:
        state = process.extractOne(row['state'], states, score_cutoff=80)
        if state:
            state_name = state[0]
            return ' '.join(map(capital, state_name.split(' ')))
    return row['state']


def fill_state_code(row):
    if row['state'] != 0:
        state = process.extractOne(row['state'], states, score_cutoff=80)
        if state:
            state_name = state[0]
            return state_to_code[state_name]
    return ''


if __name__ == "__main__":
    pd.set_option('display.width', 200)
    pd.set_option('display.max_columns',200)
    data = pd.read_excel('.\\sales.xlsx', sheet_name='sheet1', header=0)
    print('data.head() = \n', data.head())#输出前五行
    print('data.tail() = \n', data.tail())#输出后五行
    print('data.dtypes = \n', data.dtypes)#输出每一列对应的是什么东西
    print('data.columns = \n', data.columns)
    for c in data.columns:
        print(c, end=' ')
    print()
    data['total'] = data['Jan'] + data['Feb'] + data['Mar']
    print(data.head())
    print(data['Jan'].sum())
    print(data['Jan'].min())
    print(data['Jan'].max())
    print(data['Jan'].mean())

    print('=============')
    # 添加一行
    s1 = data[['Jan', 'Feb', 'Mar', 'total']].sum()
    print(s1)
    s2 = pd.DataFrame(data=s1)
    print(s2)
    print(s2.T)#转成一行
    print(s2.T.reindex(columns=data.columns))
    # 即:
    s = pd.DataFrame(data=data[['Jan', 'Feb', 'Mar', 'total']].sum()).T
    s = s.reindex(columns=data.columns, fill_value=0)
    print(s)
    data = data.append(s, ignore_index=True)
    data = data.rename(index={15:'Total'})
    print(data.tail())

    # apply的使用
    print('==============apply的使用==========')
    data.apply(enum_row, axis=1)#每一行遍历出来,进行枚举

    #简称
    state_to_code = {"VERMONT": "VT", "GEORGIA": "GA", "IOWA": "IA", "Armed Forces Pacific": "AP", "GUAM": "GU",
                     "KANSAS": "KS", "FLORIDA": "FL", "AMERICAN SAMOA": "AS", "NORTH CAROLINA": "NC", "HAWAII": "HI",
                     "NEW YORK": "NY", "CALIFORNIA": "CA", "ALABAMA": "AL", "IDAHO": "ID",
                     "FEDERATED STATES OF MICRONESIA": "FM",
                     "Armed Forces Americas": "AA", "DELAWARE": "DE", "ALASKA": "AK", "ILLINOIS": "IL",
                     "Armed Forces Africa": "AE", "SOUTH DAKOTA": "SD", "CONNECTICUT": "CT", "MONTANA": "MT",
                     "MASSACHUSETTS": "MA",
                     "PUERTO RICO": "PR", "Armed Forces Canada": "AE", "NEW HAMPSHIRE": "NH", "MARYLAND": "MD",
                     "NEW MEXICO": "NM",
                     "MISSISSIPPI": "MS", "TENNESSEE": "TN", "PALAU": "PW", "COLORADO": "CO",
                     "Armed Forces Middle East": "AE",
                     "NEW JERSEY": "NJ", "UTAH": "UT", "MICHIGAN": "MI", "WEST VIRGINIA": "WV", "WASHINGTON": "WA",
                     "MINNESOTA": "MN", "OREGON": "OR", "VIRGINIA": "VA", "VIRGIN ISLANDS": "VI",
                     "MARSHALL ISLANDS": "MH",
                     "WYOMING": "WY", "OHIO": "OH", "SOUTH CAROLINA": "SC", "INDIANA": "IN", "NEVADA": "NV",
                     "LOUISIANA": "LA",
                     "NORTHERN MARIANA ISLANDS": "MP", "NEBRASKA": "NE", "ARIZONA": "AZ", "WISCONSIN": "WI",
                     "NORTH DAKOTA": "ND",
                     "Armed Forces Europe": "AE", "PENNSYLVANIA": "PA", "OKLAHOMA": "OK", "KENTUCKY": "KY",
                     "RHODE ISLAND": "RI",
                     "DISTRICT OF COLUMBIA": "DC", "ARKANSAS": "AR", "MISSOURI": "MO", "TEXAS": "TX", "MAINE": "ME"}
    states = list(state_to_code.keys())
    print(fuzz.ratio('Python Package', 'PythonPackage'))#两个字符串的相似度
    print(process.extract('Mississippi', states))
    print(process.extract('Mississipi', states, limit=1))#输出一个结果
    print(process.extractOne('Mississipi', states))
    data.apply(find_state_code, axis=1)

    print('Before Correct State:\n', data['state'])
    data['state'] = data.apply(correct_state, axis=1)
    print('After Correct State:\n', data['state'])
    data.insert(5, 'State Code', np.nan)
    data['State Code'] = data.apply(fill_state_code, axis=1)
    print(data)

    # group by
    print('==============group by================')
    print(data.groupby('State Code'))
    print('All Columns:\n')
    print(data.groupby('State Code').sum())
    print('Short Columns:\n')
    print(data[['State Code', 'Jan', 'Feb', 'Mar', 'total']].groupby('State Code').sum())

    # 写入文件
    data.to_excel('sales_result.xls', sheet_name='Sheet1', index=False)

的程序,可以用pandas对数据进行统计

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:26:17  更:2021-07-24 11:26:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/28 19:59:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码