机器学习作业题

1. 什么是机器学习?机器学习与数据挖掘十大经典算法是哪些算法?(10分)

答:机器学习这门学科所关注的问题是:计算机程序如何随着经验积累自动提高性能。机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。 机器学习是对能通过经验自动改进的计算机算法的研究。 机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。
十大经典算法是: 1. C4.5 2. K-means 3.SVM 4. The apriori algorithm 5.最大期望(EM)算法 6.pageRank 7. AdaBoost 8.k-NN 9.朴素贝叶斯算法 10.CART 分类和回归

2. 数据库有如下5个事务,设min_sup=60%。

1101617-20180627211506048-121188114.png

(a) 使用apriori算法找出频繁项集(15)

(b) 使用FP-tree算法找出频繁项集。(10)


答:(a) Apriori 算法如下:
f:4 c:4 m:3 y:3 i:3

1101617-20180627205900239-1090170410.png
1101617-20180627205903442-675277860.png
1101617-20180627205905454-1691952043.png

(b)FP-tree 算法如下:
FP-tree 步骤:
Step 1:遍历一次数据库,导出1项频繁项的集合和支持度,降序排序。
Step 2:构造FP-tree。
Step 3:根据步骤二得到的FP-tree,为1项频繁项集中的每一项构造FP-tree。
Step 4:得到频繁模式。

f:4 c:4 m:3 y:3 i:3

1101617-20180627210158817-1542746977.png

1101617-20180627211317481-1596785572.png

1101617-20180627210314988-566704438.png

3.根据下列训练数据进行分类(Class为类别):

1) 若年收入属性分为<80,≥80两个类别,年龄属性分为≤30,31-50,≥50三个类别,请用ID3算法建立决策树;(15分)

2) 对X={性别=Female,年收入=90,年龄=32}用贝叶斯分类处理的结果是什么?(10分)

1101617-20180627211608332-293258618.png

1)首先计算信息熵H(D)=-3/6 log(3/6)-3/6log(3/6)=log2=1
下面计算各个特征对数据集D的信息增益,分别以A1,A2,A3表示性别,年收入,年龄3个特征。
这里的D1表示划分为Male的数据,D2为划分为FeMale的数据。
g(D,A1)=H(D)-[3/6H(D1)+3/6H(D2)]=1-[3/6(-1/3 log(1/3)-2/3log(2/3)+3/6(-2/3 log(2/3)-1/3log(1/3)]=0.08
这里的D1表示年收入<80的数据,D2表示年收入>=80的数据。
g(D,A2)=H(D)-[2/6H(D1)+4/6H(D2)]=1-[2/6(0)+4/6(-3/4log(3/4)-1/4log(1/4)]=0.46
这里的D1,D2, D3分别表示年龄对应的数据。
g(D,A3)=H(D)-[2/6H(D1)+3/6H(D2)+1/6H(D3)]= 1-[2/6(0)+3/6(-1/2log(1/2)-1/2log(1/2))+1/6(0)]=0.5
g(D,A3)最大,故选择A3作为最优特征。

1101617-20180627211738148-1004433296.png

(2)样本 X={性别=Female,年收入=90,年龄=32}
P(p)=3/6=0.5
P(n)=3/6=0.5
P(性别=Female|p)=2/3 P(性别=Female|n)=1/3
P(年收入>=90|p)=2/3, P(年收入>=90|n)=1/3, P(年龄>=32|p)=1/3
P(年龄>=32|n)=1
ps:年龄落在哪个区间,概率就是区间的概率。

P(X|p)P(p)=P(性别=Female|p)P(年收入=90|p)P(年龄=32|p)P(p)
=2/32/31/30.5=2/27
P(X|n)
P(n)=P(性别=Female|n)P(年收入=90|n)P(年龄=32|n)P(n)
=1/3
1/310.5=1/18

2/27>1/18,所以结果是YES。

4.如下8个点聚为三类:

A1(1,2),A2(3,1),A3(8,4),B1(5,8),B2(4,1),B3(6,4),C1(3,5),C2(4,9),距离函数是欧氏距离,并假设初始中心为A1,B1,C1.。

(1)采用K均值算法,求在第一次循环后的三个聚类中心;求最后三个类;(15)

(2)采用系统(层次)聚类法聚为三类。(10)

解:

(1)
D(A1,A2)=2.24 D(B1,A2)=7.28 D(C1,A2)=4
D(A1,A3)=7.28 D(B1,A3)=5 D(C1,A3)=5.10
D(A1,B2)=3.16 D(B1,B2)=7.07 D(C1,B2)=4.12
D(A1,B3)=5.39 D(B1,B3)=4.12 D(C1,B3)=3.16
D(A1,C2)=7.62 D(B1,C2)=1.41 D(C1,C2)= 4.12
第一次循环以后的三个聚类为 (A1,A2,B2) (B1,A3,C2) (C1,B3)
所以聚类中心为(2.67,1.33) (5.67,7) (4.5,4.5)

最后三个类为(A1,A2,B2) (C1,B3,A3) (C2,B1) ps:通过画图观察分布,只需要计算部分点。
(2)D(A1,A2)=2.24 D(A1,A3)=7.28 D(A1,B1)=7.21 D(A1,B2)=3.16 D(A1,B3)=5.39 D(A1,C1)=3.61 D(A1,C2)=7.62

D(A2,B1)=7.28 D(A2,B2)=1 D(A2,B3)=4.24 D(A2,C1)=4 D(A2,C2)=8.06
D(A3,B1)=5 D(A3,B2)=5 D(A3,B3)=2 D(A3,C1)=5.10 D(A3,C2)=6.40
D(B1,B2)=7.07 D(B1,B3)=4.12 D(B1,C1)=3.61 D(B1,C2)=1.414
D(B2,B3)=3.16 D(B2,C1)=4.12 D(B2,C2)=8
D(B3,C1)=3.16 D(B3,C2)=5.39
D(C1,C2)=4.12
最小距离为1的两个类A2,B2合并。
重新计算以后,距离最小的为1.414 B1,C2合并.
依次类推,找点到集合中最近的点。A3,B3合并
A1和(A2,B2)合并。
C1和 (A3,B3) 合并。
最终分类(A1,A2,B2) (C2,B1) (C1,A3,B3)

再一次感谢您花费时间阅读, (Ctrl+Alt+N) 开始撰写新的文稿吧!祝您在这里记录、阅读、分享愉快!

转载于:https://www.cnblogs.com/leonardju/p/9235919.html

### 吴恩达机器学习课程作业题目目录 #### 单变量线性回归 该部分作为简单的热身,主要涉及单变量线性回归的内容。具体包括: - **用图显示数据**:绘制散点图来直观展示训练集中的样本分布情况[^3]。 - **梯度下降**:实现并应用批量梯度下降算法以最小化代价函数 \( J(\theta) \)[^3]。 - **调试程序**:通过可视化手段检查模型的学习过程是否正常工作。 - **可视化\( J(\theta) \)**:创建三维面图和平面轮廓图帮助理解参数空间内的优化路径。 #### 多变量线性回归 此部分内容扩展到处理多个输入特征的情况,并介绍了两种求解方法——迭代法(即梯度下降)和解析法(即正规方程),其中提到后者适用于较小规模的数据集且无需执行归一化操作[^2]。 - **特征归一化**:当采用梯度下降时,对不同尺度的特性实施标准化预处理可以加速收敛速度。 - **梯度下降**:类似于单变量情形下所使用的策略,只不过现在要更新更多的权重参数。 - **正规方程**:提供了一种直接计算最优解的方法而不必经历多次迭代调整的过程。 此外,在实际编码过程中还会涉及到一些辅助性的任务,比如将各种数学达式转换成高效的矩阵形式以便于计算机快速处理大量数值运算[^4]。 ```python import numpy as np from matplotlib import pyplot as plt def plot_data(X, y): """Plotting the data (X, y).""" fig = plt.figure() ax = fig.add_subplot(111) ax.scatter(X, y, marker='x', c='r') plt.xlabel('Population of City in 10,000s') plt.ylabel('Profit in $10,000s') plt.show() def compute_cost(X, y, theta): m = len(y) predictions = X.dot(theta) square_err = (predictions - y) ** 2 return 1 / (2 * m) * np.sum(square_err) def gradient_descent(X, y, theta, alpha, num_iters): m = len(y) J_history = [] for i in range(num_iters): h = X @ theta loss = h - y[:,np.newaxis] grad = X.T @ loss / m theta -= alpha * grad cost = compute_cost(X, y, theta) J_history.append(cost) return theta, J_history ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值