构建没有数据集的辣辣椒分类器，准确性达到96％

1. 查找可用数据
2. 进行测量
3. 从分布创建数据集
4. 创建模型
5. 绩效评估

1.查找可用数据

2.进行测量

#   measurements
pepper_measurements_px = [
['Anaheim', 262, 63, 'Green'],
['Cubanelle', 222, 70, 'Green'],
['Cayenne', 249, 22, 'Red'],
['Shishito', 140, 21, 'Green'],
['Hungarian Wax', 148, 63, 'Orange'],
['Jimmy Nardello', 190, 23, 'Red'],
['Fresno', 120, 43, 'Red'],
['Jalapeno', 106, 40, 'Dark Green'],
['Aji Amarillo', 92, 13, 'Yellow'],
['Aji Dulce', 81, 30, 'Red'],
['Serrano', 74, 14, 'Dark Green'],
['Scotch Bonnet', 37, 42, 'Yellow'],
['Habanero', 67, 21, 'Orange'],
['Cumari', 18, 11, 'Yellow'],
]

3.从分布创建数据集

#simulated probability distribution of one stock
from scipy.stats import skewnorm
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
def create_peppers(sd, mean, alfa, size):
#invertire il segno di alfa
x = skewnorm.rvs(-alfa, size=size)
def calc(k, sd, mean):
return (k*sd)+mean
x = calc(x, sd, mean) #standard distribution
#graph the distribution
#pd.DataFrame(x).hist(bins=100)
#pick one random number from the distribution
#formally I would use cdf, but I just have to pick randomly from the 1000000 samples
df = [np.random.choice(x) for k in range(size)]
#return the DataFrame
return pd.DataFrame(df)
def cm_converter(px_measurements):
pc_cm = 0.05725
for _ in range(len(px_measurements)):
px_measurements[_][1] *= pc_cm
px_measurements[_][2] *= pc_cm
return px_measurements

#   create converted list
pepper_measurements_cm = cm_converter(pepper_measurements_px)
#   create final datasets
heigh_sd = 0.1
width_sd = 0.1
df = pd.DataFrame()
for _ in pepper_measurements_cm:
#   create height
#SD is 10% of the height
df_height = create_peppers(_[1]*heigh_sd, _[1], 0, 100000)
#   create width
#SD is 10% of the width
df_width = create_peppers(_[2]*width_sd, _[2], 0, 100000)
#create DataFrame
df_single = pd.concat([df_height, df_width], axis=1)
df_single.columns = ['height', 'width']
#create name
df_single['name'] = str(_[0])
df_single['color'] = str(_[3])
df = pd.concat([df, df_single], axis=0)
df

4.创建模型

• 是独立的
• 服从正态分布

#backup
X = df.copy()
def one_hot(df, partitions):
#togliamo le colonne da X
for col in partitions:
k = df.pop(col)
k = pd.get_dummies(k, prefix=col)
df = pd.concat([df, k] , axis=1)
return df
X = one_hot(X, ['color'])
X

y = X.pop('name')
y

X

one_hot编码后的功能

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
clf.fit(X_train, y_train)

GaussianNB(priors=None, var_smoothing=1e-09)

5.绩效评估

clf.score(X_test, y_test, sample_weight=None)
0.9659133333333333

0 条评论

• Python和Plotly实用统计与可视化

上周的一天，在谷歌上搜索“ Python的统计数据 ”，结果有些没有用。大多数文献，教程和文章都侧重于使用R进行统计，因为R是一种专门用于统计的语言，并且具有比...

• 发展中地区的气候变化与粮食短缺：Python分析

今天讨论的最重要的环境问题之一是全球变暖。这是由于气候变暖对农作物产量，天气模式，海平面，野火事件和生态系统的影响。自1850年代开始保存记录以来，全球温度的上...

• 美国确诊超100万！教你用Python画出全球疫情动态图

【导语】：今天我们教你用Python绘制全球疫情动态图，技术部分请看第二部分。公众号后台，回复关键字“全球疫情”获取完整数据。

• 数据分析索引总结（上）Pandas单级索引

寄语：本文对单级索引中的loc、iloc、[]三种方法进行了详细的阐述。同时，对布尔索引，快速标量索引方式、区间索引方式做了详细介绍。

• 快乐学习Pandas入门篇：Pandas基础

寄语：本文对Pandas基础内容进行了梳理，从文件读取与写入、Series及DataFrame基本数据结构、常用基本函数及排序四个模块快速入门。同时，文末给出了...

• 【技巧】11 个 Python Pandas 小技巧让你更高效

Pandas是一个在Python中广泛应用的数据分析包。市面上有很多关于Pandas的经典教程，但本文介绍几个隐藏的炫酷小技巧，我相信这些会对你有所帮助。

• 10招！看骨灰级Pythoner如何玩转Python

pandas是基于numpy构建的，使数据分析工作变得更快更简单的高级数据结构和操作工具。本文为大家带来10个玩转Python的小技巧，学会了分分钟通关变大神！

• 妈妈再也不用担心我忘记pandas操作了

pandas的操作上千种，但对于数据分析的使用掌握常用的操作就可以应付了，更多的操作可以参考pandas官网。

• 10个高效的pandas技巧

原题 | 10 Python Pandas tricks that make your work more efficient