首页 > 分享 > 机器学习基础1

机器学习基础1

目录

赔率

案例

计算赔率

Pandas

数据清洗和数据处理

车辆数据描述

代码区

判断1-10万间是否为素数

模拟环形公路堵车

 

赔率

浔阳江畔艄公张横和张顺正进行400米自由泳比赛, 宋江开赌场做庄,规定:张横赢赔率为3,张顺赢 赔率为2。假定不存在平局。赌徒李逵为张横下注 10两。比赛结束后,若最终张横赢,则宋江付赌徒李逵30两(10×3),赌资10两归庄家宋江所有,即李逵赚20两。若张顺赢,赌资10两归庄家宋江所有,即李逵赔10两。

假定所有赌徒中,共有a元买张横,b元买张 顺,则开赛前宋江收入为a+b元,开赛后的赔付期望为:

从上述结论知:使用y=1/p作为赔率,会使 得庄家在期望上不赔不赚。

这即“公平赔率”:yfair

——没有利润,这显然是庄家不希望看到的

案例

计算赔率

拼团人数当时是1026人,尚有两天结束,根据历史先验,假定1天参团人数为100人,则最终参团人数为1226左右。考虑到3月12日为星期日,参团人数或许略低,因此大体参 团区间可能是[1180,1230]。

Pandas

1.Fuzzywuzzy - Levenshtein distance 做数据清洗,尤其是做字符串的替换。

2.模糊查询与替换。

鸢尾花数据集

鸢尾花数据集或许是最 有 名的 模 式识 别 测试 数 据。

早在1936 年,模式识别的先驱 Fisher 就在论文“ The use of  multiple measurements in taxonomic problems” 中使用了它 ( 直至今日该论文仍然被频繁引 用 ) 。

该数据集包括 3 个鸢 尾 花类 别 ,每 个 类别 有 50 个样 本。其中一个类别是与 另 外两 类 线性 可 分的 , 而另 外两类不能线性可分。

由于Fisher 的最原始数据集存在两个错 误 (35 号和 38 号样本) ,实验中我们使用的是修正过 的 数据。

数据清洗和数据处理

车辆数据描述

代码区

判断1-10万间是否为素数

import operator

import numpy as np

import matplotlib.pyplot as plt

import matplotlib as mpl

from time import time

import math

def is_prime(x):

return 0 not in [x % i for i in range(2, int(math.sqrt(x)) + 1)]

def is_prime3(x):

flag = True

for p in p_list2:

if p > math.sqrt(x):

break

if x % p == 0:

flag = False

break

if flag:

p_list2.append(x)

return flag

if __name__ == "__main__":

a = 2

b = 100000

t = time()

p = [p for p in range(a, b) if 0 not in [p % d for d in range(2, int(math.sqrt(p)) + 1)]]

print time() - t

print p

t = time()

p = filter(is_prime, range(a, b))

print time() - t

print p

t = time()

is_prime2 = (lambda x: 0 not in [x % i for i in range(2, int(math.sqrt(x)) + 1)])

p = filter(is_prime2, range(a, b))

print time() - t

print p

t = time()

p_list = []

for i in range(2, b):

flag = True

for p in p_list:

if p > math.sqrt(i):

break

if i % p == 0:

flag = False

break

if flag:

p_list.append(i)

print time() - t

print p_list

p_list2 = []

t = time()

filter(is_prime3, range(2, b))

print time() - t

print p_list2

print '---------------------'

a = 1180

b = 1230

a = 1600

b = 1700

p_list2 = []

p = np.array(filter(is_prime3, range(2, b+1)))

p = p[p >= a]

print p

p_rate = float(len(p)) / float(b-a+1)

print '素数的概率:', p_rate, 't',

print '公正赔率:', 1/p_rate

print '合数的概率:', 1-p_rate, 't',

print '公正赔率:', 1 / (1-p_rate)

模拟环形公路堵车

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 = 3000

np.random.seed(0)

x = np.random.rand(n) * path

x.sort()

v = np.tile([v0], n).astype(np.float)

plt.figure(figsize=(10, 8), facecolor='w')

for t in range(Times):

plt.scatter(x, [t]*n, s=1, c='k', alpha=0.05)

for i in range(n):

if x[(i+1)%n] > x[i]:

d = x[(i+1) % n] - x[i]

else:

d = path - x[i] + x[(i+1) % n]

if v[i] < d:

if np.random.rand() > p:

v[i] += 1

else:

v[i] -= 1

else:

v[i] = d - 1

v = v.clip(0, 150)

x += v

clip(x, path)

plt.xlim(0, path)

plt.ylim(0, Times)

plt.xlabel(u'车辆位置', fontsize=16)

plt.ylabel(u'模拟时间', fontsize=16)

plt.title(u'环形公路车辆堵车模拟', fontsize=20)

plt.tight_layout(pad=2)

plt.show()

相关知识

第 1 章 机器学习基础引言
[机器学习基础][笔记] 一、鸢尾花分类
AI小白学习之旅(1):从什么是机器学习说起
机器学习之路:经典的鸢尾花数据集
机器学习术语表
Python机器学习基础教程
OpenCV机器学习(1):贝叶斯分类器实现代码分析
[Python机器学习]鸢尾花分类 机器学习应用
《Python机器学习开发实战》电子书在线阅读
机器学习常用术语

网址: 机器学习基础1 https://m.huajiangbk.com/newsview537545.html

所属分类:花卉
上一篇: 北京科技大学化学与生物工程学院
下一篇: 后花园选美大赛