Math的取值和基本算法

在编程中经常会用到Math的算法,所以在整理资料的时候简单的列出了一些常用的Math算法

package day_160810_common;

import java.util.*;
import static java.lang.Math.PI;
import static java.lang.Math.*;

public class DemoMath {
	public static void main(String[] args) {
		// abs求绝对值
		System.out.println(Math.abs(-1.5));
		// ceil,向上取值
		System.out.println(Math.ceil(1.2));// 2.0
		System.out.println(Math.ceil(-1.2));// -1.0
		// floor,向下取值
		System.out.println(Math.floor(1.2));// 1.0
		System.out.println(Math.floor(-1.2));// -2.0
		// max,min求最大最小值
		System.out.println(Math.max(2, 3));
		System.out.println(Math.min(4, 5));
		// pow,2的3次方
		System.out.println(Math.pow(2, 3));
		// 求整,四舍五入
		System.out.println(Math.round(1.2));// 1
		System.out.println(Math.round(1.5));// 2

		System.out.println(Math.PI);
		System.out.println(PI);
		// 开方
		System.out.println(sqrt(4));// 2
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C4.5算法是一种基于决策树的分类算法,它通过对数据集进行递归分裂,构建一棵决策树模型,用于分类任务。与ID3算法相比,C4.5算法具有更高的效率和更好的处理连续型属性的能力。 C4.5算法的实现原理如下: 1. 构建决策树:从根节点开始,选择最优的属性进行分裂,将数据集划分为若干子集,每个子集对应一个子节点。对每个子集递归执行该过程,直到所有子集都属于同一类别或无法再分。 2. 属性选择:选择最优的属性进行分裂,使得划分后的子集纯度更高。在C4.5算法中,使用信息增益比来评估属性的重要性,同时考虑属性的取值数目对信息增益的影响。 3. 剪枝处理:对构建好的决策树进行剪枝,以避免过拟合。剪枝处理可以通过预留一部分数据作为验证集,计算决策树的泛化误差来实现。 C4.5算法的应用实例包括: 1. 信用风险评估:根据客户的个人信息和历史还款记录等,构建一棵决策树来预测客户的信用风险等级。 2. 医学诊断:根据患者的症状、体征等信息,构建一棵决策树来对疾病进行诊断和治疗方案推荐。 3. 商品推荐:根据用户的历史购买记录、浏览记录等信息,构建一棵决策树来推荐用户感兴趣的商品。 下面是一个使用Python实现C4.5算法的示例代码: ```python from math import log from collections import Counter def calc_entropy(data): """ 计算数据集的信息熵 """ labels = [d[-1] for d in data] counter = Counter(labels) entropy = 0.0 for label in counter.keys(): prob = counter[label] / len(labels) entropy -= prob * log(prob, 2) return entropy def split_data(data, axis, value): """ 按照给定特征划分数据集 """ sub_data = [] for d in data: if d[axis] == value: sub_d = d[:axis] + d[axis+1:] sub_data.append(sub_d) return sub_data def choose_feature(data): """ 选择最优划分特征 """ num_features = len(data[0]) - 1 base_entropy = calc_entropy(data) best_info_gain_ratio = 0.0 best_feature = -1 for i in range(num_features): values = [d[i] for d in data] unique_values = set(values) new_entropy = 0.0 split_info = 0.0 for value in unique_values: sub_data = split_data(data, i, value) prob = len(sub_data) / len(data) new_entropy += prob * calc_entropy(sub_data) split_info -= prob * log(prob, 2) info_gain = base_entropy - new_entropy info_gain_ratio = info_gain / split_info if info_gain_ratio > best_info_gain_ratio: best_info_gain_ratio = info_gain_ratio best_feature = i return best_feature def majority_vote(labels): """ 多数表决决定叶子节点类别 """ counter = Counter(labels) majority_label = counter.most_common(1)[0][0] return majority_label def create_tree(data, features): """ 递归构建决策树 """ labels = [d[-1] for d in data] if len(set(labels)) == 1: return labels[0] if len(data[0]) == 1: return majority_vote(labels) best_feature = choose_feature(data) best_feature_name = features[best_feature] del(features[best_feature]) tree = {best_feature_name: {}} feature_values = [d[best_feature] for d in data] unique_values = set(feature_values) for value in unique_values: sub_features = features[:] sub_data = split_data(data, best_feature, value) sub_tree = create_tree(sub_data, sub_features) tree[best_feature_name][value] = sub_tree return tree data = [['青年', '否', '否', '一般', '否'], ['青年', '否', '否', '好', '否'], ['青年', '是', '否', '好', '是'], ['青年', '是', '是', '一般', '是'], ['青年', '否', '否', '一般', '否'], ['中年', '否', '否', '一般', '否'], ['中年', '否', '否', '好', '否'], ['中年', '是', '是', '好', '是'], ['中年', '否', '是', '非常好', '是'], ['中年', '否', '是', '非常好', '是'], ['老年', '否', '是', '非常好', '是'], ['老年', '否', '是', '好', '是'], ['老年', '是', '否', '好', '是'], ['老年', '是', '否', '非常好', '是'], ['老年', '否', '否', '一般', '否']] features = ['年龄', '有工作', '有自己的房子', '信贷情况'] tree = create_tree(data, features) print(tree) ``` 上述代码实现了一个简单的决策树构建算法,并使用C4.5算法选择最优划分特征。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值