机器学习算法编程实现:Logistic Regression、Fisher判别和K均值

需积分: 0 1 下载量 121 浏览量 更新于2024-08-04 收藏 1.2MB DOCX 举报
编程实现机器学习算法 本资源主要介绍了三种机器学习算法的编程实现:Logistic Regression、Fisher Linear Discriminant和K-Means Clustering。这些算法是机器学习中常用的分类和聚类算法,广泛应用于数据挖掘、模式识别和自然语言处理等领域。 **Logistic Regression** Logistic Regression是常用的分类算法,用于预测二元分类问题。给定一个数据集,Logistic Regression算法可以学习到一个分类面,将数据点分为两类。在本资源中,我们将学习如何实现Logistic Regression算法,并应用于给定的数据集上。 **实现步骤** 1. 生成数据集:使用高斯随机生成器生成两个具有200个二维向量的数据集,前半部分来自均值向量的正态分布,并且协方差矩阵,后半部分来自均值向量的正态分布,并且协方差矩阵。 2. 将数据集分为训练集和测试集:随机抽取150个样本作为训练集,余下的50个样本作为测试集。 3. 使用Logistic Regression算法进行分类:对训练集应用Logistic Regression算法,学习分类面,并对测试集进行分类。 4. 绘制测试样本及其分类面:将测试样本和分类面绘制出来,视觉化分类结果。 5. 统计错误率:计算分类错误率,评估Logistic Regression算法的性能。 **Fisher Linear Discriminant** FisherLinear Discriminant是常用的线性判别算法,用于二元分类问题。该算法可以学习到一个投影向量,使得数据点在该向量上的投影能够很好地分离。在本资源中,我们将学习如何实现Fisher Linear Discriminant算法,并应用于给定的数据集上。 **实现步骤** 1. 生成数据集:使用高斯随机生成器生成两个具有200个二维向量的数据集,前半部分来自均值向量的正态分布,并且协方差矩阵,后半部分来自均值向量的正态分布,并且协方差矩阵。 2. 使用Fisher Linear Discriminant算法进行分类:对数据集应用Fisher Linear Discriminant算法,学习投影向量,并对数据点进行分类。 3. 绘制最佳投影向量:将投影向量绘制出来,视觉化分类结果。 4. 给出分类阈值:计算分类阈值,评估Fisher Linear Discriminant算法的性能。 **K-Means Clustering** K-Means Clustering是常用的聚类算法,用于无监督学习。该算法可以将数据点分为K个聚类。在本资源中,我们将学习如何实现K-Means Clustering算法,并应用于给定的数据集上。 **实现步骤** 1. 生成数据集:使用给定的数据集,包含20个二维向量。 2. 使用K-Means Clustering算法进行聚类:对数据集应用K-Means Clustering算法,学习聚类中心,并对数据点进行聚类。 3. 统计聚类结果:计算聚类结果,评估K-Means Clustering算法的性能。 通过学习这三种机器学习算法的编程实现,我们可以更好地理解机器学习的原理和应用,提高数据分析和处理能力。

def func_parse_find_by_dict(self, root, dict_find): list_result=[] if 'dict_L2_find' in dict_find.keys(): List_node_L1 = self.func_ET_find_node_from_parent_node(root, dict_find, 'str_L1_findall', 'str_L1_find') list_L2_find_current = dict_find['dict_L2_find']['list_current'] for node_L1 in List_node_L1: list_L2_current_result = [self.func_ET_find_item_from_node(node_L1, str_t) for str_t in list_L2_find_current] # list_L2_L3_current_result = list_L2_current_result if 'dict_L3_find' in dict_find.keys(): List_node_L2 = self.func_ET_find_node_from_parent_node(node_L1, dict_find['dict_L2_find'], 'str_next_findall', 'str_next_find') list_L3_find_current = dict_find['dict_L3_find']['list_current'] if List_node_L2 == []: list_L3_current_result = ['--' for str_t in list_L3_find_current] list_result.append(list_L2_current_result + list_L3_current_result) else: for node_L2 in List_node_L2: list_L3_current_result = [self.func_ET_find_item_from_node(node_L2, str_t) for str_t in list_L3_find_current] if 'dict_L4_find' in dict_find.keys(): List_node_L3 = self.func_ET_find_node_from_parent_node(node_L2, dict_find['dict_L3_find'], 'str_next_findall', 'str_next_find') list_L4_find_current = dict_find['dict_L4_find']['list_current'] if List_node_L3 == []: list_L4_current_result = ['--' for str_t in list_L4_find_current] list_result.append(list_L2_current_result + list_L3_current_result + list_L4_current_result) else: for node_L3 in List_node_L3: list_L4_current_result = [self.func_ET_find_item_from_node(node_L3, str_t) for str_t in list_L4_find_current] list_result.append(list_L2_current_result + list_L3_current_result + list_L4_current_result) else: list_result.append(list_L2_current_result + list_L3_current_result) else: list_result.append(list_L2_current_result) list_result_key=[] if 'dict_L2_find' in dict_find.keys(): list_result_key = list(map(os.path.basename, dict_find['dict_L2_find']['list_current'])) if 'dict_L3_find' in dict_find.keys(): list_result_key += list(map(os.path.basename, dict_find['dict_L3_find']['list_current'])) if 'dict_L4_find' in dict_find.keys(): list_result_key += list(map(os.path.basename, dict_find['dict_L4_find']['list_current'])) return list_result,list_result_key

2023-03-25 上传