个人理解的机器学习简单流程如下:

0.收集数据

1.对数据集进行预处理

2.划分数据集(训练集、测试集、验证集)

3.训练

4.验证模型

对每个步骤详细解释:

0.收集数据

可以使用之前学过使用爬虫对特定网页内容爬取,或在数据网页等信息网站上直接获得所需要的数据集。

1.对数据集进行预处理

对缺失数值进行处理
 -1第一种方法是直接删除缺失值所在的样本。这个方法的缺陷是对于数据集比较小的,删除样本可能会对结果造成影响

-2填补处理

from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
x[:,1] = labelencoder.fit_transform(x[:,1])
print(x)

关于Imputer参数:
1. missing_value :标记哪些是缺失值,匹配作用位置
2. strategy :处理的策略:mean 是取平均值 | median是取中位数 | most_frequent是取出现频率最高进行替换
3. axis 是策略作用的范围,0表示在缺失那一列应用策略,然后取代,1则是在行应用策略

2.划分数据集(训练集、测试集、验证集)

-交叉验证法

from sklearn import datasets
from sklearn.model_selection import KFold, RepeatedKFold
from sklearn.linear_model import LogisticRegression #导入逻辑回归分类算法
from sklearn.metrics import accuracy_score

data = datasets.load_iris() #导入数据集
X = data['data']
y = data['target']

clf = LogisticRegression(solver='newton-cg') #设置优化方法为牛顿法

k_fold = 10 #设置为10折划分
kf = KFold(n_splits=k_fold) 
averg_score = 0
for train_index, test_index in kf.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    averg_score += accuracy_score(y_test, y_pred)
print("%d折交叉验证的准确率的平均值为%f"%(k_fold, averg_score / k_fold))

averg_score = 0
repeats_num = 10
rkf = RepeatedKFold(n_splits=k_fold, n_repeats=repeats_num)
for train_index, test_index in rkf.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    averg_score += accuracy_score(y_test, y_pred)
averg_score = averg_score / (repeats_num * k_fold)
print("%d次%d折交叉验证的准确率的平均值为%f"%(repeats_num, k_fold, averg_score))

-留出法

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC #导入支持向量机分类算法
from sklearn.metrics import accuracy_score


data = datasets.load_iris() #导入数据集
X = data['data']
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3) #对数据集进行划分

clf = SVC()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)

print(accuracy_score(y_test, y_pred)) #打印准确率

3.训练

 输入层,输出层,隐层

名词和内容:

>随机初始化:所有权值都初始化为0(或者说初始化为相同的值)是不合适的,这就是所谓的对称权重问题;因此需要对权重进行随机初始化,将每个参数都初始化为某一个闭区间内的随机数。

 

>损失函数:损失函数(loss function)就是用来度量模型的预测值f(x)与真实值Y的差异程度的运算函数,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。

 均方误差损失函数(MSE)、L2损失函数、 L1损失函数

 

 

 参考文献:损失函数(Loss Function) - 知乎 (zhihu.com)

>优化器:

 

 

4.验证模型

常用P-R曲线,ROC曲线、AUC等作为评价指标。

用matplotlib画图,验证模型的泛化性能

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐