python 中 机器学习算法 --决策树

2023-05-16

文章目录

  • 思维脑图
    • 3.1.2 用pandas加载数据集
    • 3.1.3 清洗数据集
      • 现在计算这些的实际值
      • 主队和客队最后一场比赛赢了吗?
  • 3.2 决策树
    • 3.2.1 决策树中的参数
    • 3.2.2 决策树的使用|
    • 3.3 体育赛事结果预测
  • 3.4 随机森林
    • 参考文献

思维脑图

在这里插入图片描述

import os
import numpy as np
import pandas as pd
home_folder = "./PythonDataMining/"
data_folder = os.path.join(home_folder,'data')
data_filename = os.path.join(data_folder, "leagues_NBA_2014_games_games.csv")

3.1.2 用pandas加载数据集

results = pd.read_csv(data_filename)
results.iloc[:5]
DateScore TypeVisitor TeamVisitorPtsHome TeamHomePtsOT?Notes
0Tue Oct 29 2013Box ScoreOrlando Magic87Indiana Pacers97NaNNaN
1Tue Oct 29 2013Box ScoreLos Angeles Clippers103Los Angeles Lakers116NaNNaN
2Tue Oct 29 2013Box ScoreChicago Bulls95Miami Heat107NaNNaN
3Wed Oct 30 2013Box ScoreBrooklyn Nets94Cleveland Cavaliers98NaNNaN
4Wed Oct 30 2013Box ScoreAtlanta Hawks109Dallas Mavericks118NaNNaN

3.1.3 清洗数据集

results = pd.read_csv(data_filename, skiprows=[0,])
# Fix the name of the columns
results.columns = ["Date", "Score Type", "Visitor Team", "VisitorPts", "Home Team", "HomePts", "OT?", "Notes"]
results.iloc[:5]
DateScore TypeVisitor TeamVisitorPtsHome TeamHomePtsOT?Notes
0Tue Oct 29 2013Box ScoreLos Angeles Clippers103Los Angeles Lakers116NaNNaN
1Tue Oct 29 2013Box ScoreChicago Bulls95Miami Heat107NaNNaN
2Wed Oct 30 2013Box ScoreBrooklyn Nets94Cleveland Cavaliers98NaNNaN
3Wed Oct 30 2013Box ScoreAtlanta Hawks109Dallas Mavericks118NaNNaN
4Wed Oct 30 2013Box ScoreWashington Wizards102Detroit Pistons113NaNNaN
results['HomeWin'] = results['VisitorPts'] < results['HomePts']
y_true = results['HomeWin'].values
results.iloc[:5]
DateScore TypeVisitor TeamVisitorPtsHome TeamHomePtsOT?NotesHomeWin
0Tue Oct 29 2013Box ScoreLos Angeles Clippers103Los Angeles Lakers116NaNNaNTrue
1Tue Oct 29 2013Box ScoreChicago Bulls95Miami Heat107NaNNaNTrue
2Wed Oct 30 2013Box ScoreBrooklyn Nets94Cleveland Cavaliers98NaNNaNTrue
3Wed Oct 30 2013Box ScoreAtlanta Hawks109Dallas Mavericks118NaNNaNTrue
4Wed Oct 30 2013Box ScoreWashington Wizards102Detroit Pistons113NaNNaNTrue
print("Home Win 百分比: {0:.1f}%".format(100 * results["HomeWin"].sum() / results["HomeWin"].count()))
results["HomeLastWin"] = False
results["VisitorLastWin"] = False
# This creates two new columns, all set to False
results.iloc[:5]
Home Win 百分比: 58.0%
DateScore TypeVisitor TeamVisitorPtsHome TeamHomePtsOT?NotesHomeWinHomeLastWinVisitorLastWin
0Tue Oct 29 2013Box ScoreLos Angeles Clippers103Los Angeles Lakers116NaNNaNTrueFalseFalse
1Tue Oct 29 2013Box ScoreChicago Bulls95Miami Heat107NaNNaNTrueFalseFalse
2Wed Oct 30 2013Box ScoreBrooklyn Nets94Cleveland Cavaliers98NaNNaNTrueFalseFalse
3Wed Oct 30 2013Box ScoreAtlanta Hawks109Dallas Mavericks118NaNNaNTrueFalseFalse
4Wed Oct 30 2013Box ScoreWashington Wizards102Detroit Pistons113NaNNaNTrueFalseFalse

现在计算这些的实际值

主队和客队最后一场比赛赢了吗?

# Now compute the actual values for these
# Did the home and visitor teams win their last game?
from collections import defaultdict
won_last = defaultdict(int)

for index, row in results.iterrows():  # Note that this is not efficient
    home_team = row["Home Team"]
    visitor_team = row["Visitor Team"]
    row["HomeLastWin"] = won_last[home_team]
    row["VisitorLastWin"] = won_last[visitor_team]
    results.iloc[index] = row    
    # Set current win
    won_last[home_team] = row["HomeWin"]
    won_last[visitor_team] = not row["HomeWin"]
results.iloc[20:25]
DateScore TypeVisitor TeamVisitorPtsHome TeamHomePtsOT?NotesHomeWinHomeLastWinVisitorLastWin
20Fri Nov 1 2013Box ScoreMiami Heat100Brooklyn Nets101NaNNaNTrueFalseFalse
21Fri Nov 1 2013Box ScoreCleveland Cavaliers84Charlotte Bobcats90NaNNaNTrueFalseTrue
22Fri Nov 1 2013Box ScorePortland Trail Blazers113Denver Nuggets98NaNNaNFalseFalseFalse
23Fri Nov 1 2013Box ScoreDallas Mavericks105Houston Rockets113NaNNaNTrueTrueTrue
24Fri Nov 1 2013Box ScoreSan Antonio Spurs91Los Angeles Lakers85NaNNaNFalseFalseTrue

3.2 决策树

决策树是一种有监督的机器学习算法,它看起来就像是由一系列节点组成的流程图,其中位
于上层节点的值决定下一步走向哪个节点。

%%html
<img src = './image/决策树1.png',width=100,height=100>

<img src = ‘./image/决策树1.png’,width=100,height=100>

跟大多数分类算法一样,决策树也分为两大步骤。
 首先是训练阶段,用训练数据构造一棵树。上一章的近邻算法没有训练阶段,但是决策
树需要。从这个意义上说,近邻算法是一种惰性算法,在用它进行分类时,它才开始干
活。相反,决策树跟大多数机器学习方法类似,是一种积极学习的算法,在训练阶段完
成模型的创建。
 其次是预测阶段,用训练好的决策树预测新数据的类别。以上图为例,[“is raining”,
“very windy”]的预测结果为“Bad”(坏天气)。
创建决策树的算法有多种,大都通过迭代生成一棵树。它们从根节点开始,选取最佳特征,
用于第一个决策,到达下一个节点,选择下一个最佳特征,以此类推。当发现无法从增加树的层
级中获得更多信息时,算法启动退出机制。
scikit-learn库实现了分类回归树(Classification and Regression Trees,CART)算法并将
其作为生成决策树的默认算法,它支持连续型特征和类别型特征。

3.2.1 决策树中的参数

3.2.2 决策树的使用|

from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier(random_state=14)

from sklearn.model_selection import cross_val_score

X_previouswins = results[['HomeLastWin','VisitorLastWin']].values
clf = DecisionTreeClassifier(random_state=14)
scores = cross_val_score(clf,X_previouswins,y_true,scoring = 'accuracy')
print('Using just the last result from the home and visitor teams')
print('Accuracy: {0:.1f}%'.format(np.mean(scores)*100))
Using just the last result from the home and visitor teams
Accuracy: 59.1%

3.3 体育赛事结果预测

# What about win streaks?
results["HomeWinStreak"] = 0
results["VisitorWinStreak"] = 0
# Did the home and visitor teams win their last game?
from collections import defaultdict
win_streak = defaultdict(int)

for index, row in results.iterrows():  # Note that this is not efficient
    home_team = row["Home Team"]
    visitor_team = row["Visitor Team"]
    row["HomeWinStreak"] = win_streak[home_team]
    row["VisitorWinStreak"] = win_streak[visitor_team]
    results.loc[index] = row    
    # Set current win
    if row["HomeWin"]:
        win_streak[home_team] += 1
        win_streak[visitor_team] = 0
    else:
        win_streak[home_team] = 0
        win_streak[visitor_team] += 1
clf = DecisionTreeClassifier(random_state=14)
X_winstreak =  results[["HomeLastWin", "VisitorLastWin", "HomeWinStreak", "VisitorWinStreak"]].values
scores = cross_val_score(clf, X_winstreak, y_true, scoring='accuracy')
print("Using whether the home team is ranked higher")
print("Accuracy: {0:.1f}%".format(np.mean(scores) * 100))
Using whether the home team is ranked higher
Accuracy: 58.4%

我们试试看哪个队在阶梯上更好。使用上一年的梯子

ladder_filename = os.path.join(data_folder, "leagues_NBA_2013_standings_expanded-standings.csv")
ladder = pd.read_csv(ladder_filename)
ladder.head()
RkTeamOverallHomeRoadEWACSE...Post≤3≥10OctNovDecJanFebMarApr
01Miami Heat66-1637-429-1241-1125-514-412-615-1...30-29-339-81-010-310-58-512-117-18-1
12Oklahoma City Thunder60-2234-726-1521-939-137-38-26-4...21-83-644-6NaN13-411-211-57-412-56-2
23San Antonio Spurs58-2435-623-1825-533-198-29-18-2...16-129-531-101-012-412-412-38-310-43-6
34Denver Nuggets57-2538-319-2219-1138-145-510-04-6...24-411-728-80-18-89-612-38-413-27-1
45Los Angeles Clippers56-2632-924-1721-935-177-38-26-4...17-93-538-121-08-616-09-78-57-77-1

5 rows × 24 columns

#这里好像所有的特征都转变为只有几类,例如True和false ,不然那个信息增益要算很多

# We can create a new feature -- HomeTeamRanksHigher\
results["HomeTeamRanksHigher"] = 0
for index, row in results.iterrows():
    home_team = row["Home Team"]
    visitor_team = row["Visitor Team"]
    if home_team == "New Orleans Pelicans":
        home_team = "New Orleans Hornets"
    elif visitor_team == "New Orleans Pelicans":
        visitor_team = "New Orleans Hornets"
    home_rank = ladder[ladder["Team"] == home_team]["Rk"].values[0]
    visitor_rank = ladder[ladder["Team"] == visitor_team]["Rk"].values[0]
    row["HomeTeamRanksHigher"] = int(home_rank > visitor_rank)
    results.iloc[index] = row
results[:5]
DateScore TypeVisitor TeamVisitorPtsHome TeamHomePtsOT?NotesHomeWinHomeLastWinVisitorLastWinHomeWinStreakVisitorWinStreakHomeTeamRanksHigher
0Tue Oct 29 2013Box ScoreLos Angeles Clippers103Los Angeles Lakers116NaNNaNTrue00001
1Tue Oct 29 2013Box ScoreChicago Bulls95Miami Heat107NaNNaNTrue00000
2Wed Oct 30 2013Box ScoreBrooklyn Nets94Cleveland Cavaliers98NaNNaNTrue00001
3Wed Oct 30 2013Box ScoreAtlanta Hawks109Dallas Mavericks118NaNNaNTrue00001
4Wed Oct 30 2013Box ScoreWashington Wizards102Detroit Pistons113NaNNaNTrue00000
X_homehigher =  results[["HomeLastWin", "VisitorLastWin", "HomeTeamRanksHigher"]].values
clf = DecisionTreeClassifier(random_state=14)
scores = cross_val_score(clf, X_homehigher, y_true, scoring='accuracy')
print("Using whether the home team is ranked higher")
print("准确率: {0:.1f}%".format(np.mean(scores) * 100))
Using whether the home team is ranked higher
准确率: 60.2%
from sklearn.model_selection import GridSearchCV

parameter_space = {
                   "max_depth": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
                   }
clf = DecisionTreeClassifier(random_state=14)
grid = GridSearchCV(clf, parameter_space)
grid.fit(X_homehigher, y_true)
print("准确率: {0:.1f}%".format(grid.best_score_ * 100))
准确率: 60.5%

#谁赢了最后一场比赛?我们忽略了家/访客这一点

last_match_winner = defaultdict(int)
results['HomeTeamWonLast'] = 0

for index, row in results.iterrows():
    home_team = row["Home Team"]
    visitor_team = row["Visitor Team"]
    teams = tuple(sorted([home_team, visitor_team]))  # Sort for a consistent ordering
    # 在当前行中记录上次交手的胜方
    row["HomeTeamWonLast"] = 1 if last_match_winner[teams] == row["Home Team"] else 0
    results.loc[index] = row
    # 本次比赛的胜方
    winner = row["Home Team"] if row["HomeWin"] else row["Visitor Team"]
    last_match_winner[teams] = winner
results.loc[:5]
DateScore TypeVisitor TeamVisitorPtsHome TeamHomePtsOT?NotesHomeWinHomeLastWinVisitorLastWinHomeWinStreakVisitorWinStreakHomeTeamRanksHigherHomeTeamWonLast
0Tue Oct 29 2013Box ScoreLos Angeles Clippers103Los Angeles Lakers116NaNNaNTrue000010
1Tue Oct 29 2013Box ScoreChicago Bulls95Miami Heat107NaNNaNTrue000000
2Wed Oct 30 2013Box ScoreBrooklyn Nets94Cleveland Cavaliers98NaNNaNTrue000010
3Wed Oct 30 2013Box ScoreAtlanta Hawks109Dallas Mavericks118NaNNaNTrue000010
4Wed Oct 30 2013Box ScoreWashington Wizards102Detroit Pistons113NaNNaNTrue000000
5Wed Oct 30 2013Box ScoreLos Angeles Lakers94Golden State Warriors125NaNNaNTrue0True0100
X_home_higher =  results[["HomeTeamRanksHigher", "HomeTeamWonLast"]].values
clf = DecisionTreeClassifier(random_state=14)
scores = cross_val_score(clf, X_home_higher, y_true, scoring='accuracy')
print("Using whether the home team is ranked higher")
print("准确率: {0:.1f}%".format(np.mean(scores) * 100))
Using whether the home team is ranked higher
准确率: 60.5%

最后我们来看一下,决策树在训练数据量很大的情况下,能否得到有效的分类模型。我们将
会为决策树添加球队,以检测它是否能整合新增的信息。
虽然决策树能够处理特征值为类别型的数据,但scikit-learn库所实现的决策树算法要求
先对这类特征进行处理。用LabelEncoder转换器就能把字符串类型的球队名转化为整型。代码
如下

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
encoding = LabelEncoder()
encoding.fit(results["Home Team"].values)
home_teams = encoding.transform(results["Home Team"].values)
visitor_teams = encoding.transform(results["Visitor Team"].values)
X_teams = np.vstack([home_teams, visitor_teams]).T

决策树可以用这些特征值进行训练,但DecisionTreeClassifier仍把它们当作连续型特
征。例如,编号从0到16的17支球队,算法会认为球队1和2相似,而球队4和10不同。但其实这没
意义,对于两支球队而言,它们要么是同一支球队,要么不同,没有中间状态!
为了消除这种和实际情况不一致的现象,我们可以使用OneHotEncoder转换器把这些整数转
换为二进制数字。每个特征用一个二进制数字①来表示。例如,LabelEncoder为芝加哥公牛队分配
的数值是7,那么OneHotEncoder为它分配的二进制数字的第七位就是1,其余队伍的第七位就是0。
每个可能的特征值都这样处理,而数据集会变得很大。代码如下:

onehot = OneHotEncoder()
X_teams = onehot.fit_transform(X_teams).todense()

clf = DecisionTreeClassifier(random_state=14)
scores = cross_val_score(clf, X_teams, y_true, scoring='accuracy')
print("准确率: {0:.1f}%".format(np.mean(scores) * 100))
准确率: 60.1%

正确率为60%,比基准值要高,但是没有之前的效果好。原因可能在于特征数增加后,决策
树处理不当。鉴于此,我们尝试修改算法,看看会不会起作用。数据挖掘有时就是不断尝试新算
法、使用新特征这样一个过程。

3.4 随机森林

from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(random_state=14)
scores = cross_val_score(clf, X_teams, y_true, scoring='accuracy')
print("Using full team labels is ranked higher")
print("准确率: {0:.1f}%".format(np.mean(scores) * 100))
Using full team labels is ranked higher
准确率: 61.5%
X_all = np.hstack([X_home_higher,X_teams])
print(X_all.shape)
(1229, 62)
clf = RandomForestClassifier(random_state=14)
scores = cross_val_score(clf, X_all, y_true, scoring='accuracy')
print("Using whether the home team is ranked higher")
print("准确率: {0:.1f}%".format(np.mean(scores) * 100))
Using whether the home team is ranked higher
准确率: 62.9%

我们也可以尝试CridSearchCV类的其他参数

parameter_space = {
                   "max_features": [2, 10, 'auto'],
                   "n_estimators": [100,],
                   "criterion": ["gini", "entropy"],
                   "min_samples_leaf": [2, 4, 6],
                   }
clf = RandomForestClassifier(random_state=14)
grid = GridSearchCV(clf, parameter_space)
grid.fit(X_all, y_true)
print("准确率: {0:.1f}%".format(grid.best_score_ * 100))
print(grid.best_estimator_)
准确率: 65.4%
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,
                       criterion='entropy', max_depth=None, max_features='auto',
                       max_leaf_nodes=None, max_samples=None,
                       min_impurity_decrease=0.0, min_impurity_split=None,
                       min_samples_leaf=6, min_samples_split=2,
                       min_weight_fraction_leaf=0.0, n_estimators=100,
                       n_jobs=None, oob_score=False, random_state=14, verbose=0,
                       warm_start=False)

参考文献

<<机器学习>> --周志华
<<数据挖掘概念与技术>> 中文版的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 中 机器学习算法 --决策树 的相关文章

  • 中国程序员之我还是一名说唱歌手

    双重身份 List item 小编虽然也是一名程序员但是我的隐藏身份其实是一名说唱歌手 xff0c 没错就是你们口中的 rapper xff0c xff0c 而对于很多人有这样的双重身份早已见怪不怪了 xff01 哈哈哈我来举个例子吧 xf
  • MapReduce小文件问题

    MapReduce小文件问题 1 小文件处理的弊端 1 每个小文件都要执行一次map任务 增加map任务的开销 2 小文件太多 会耗费很多时间去寻址 3 需要记录小文件的元数据 造成namenode的内存浪费 2 解决办法 1 尽量避免出现
  • Docker之Dockerfile

    Dockerfile介绍 构建步骤 xff1a 1 编写一个dockerfile文件 2 docker build 构建一个镜像 3 docker run 运行一个镜像 4 docker push发布镜像 xff08 DockerHub 阿
  • 编程为了什么?到底什么才是真正的程序员

    第一章 我非常幸运出生在一个电脑和电子游戏还没有普遍的时代 所以我可以和我的小伙伴们一起玩耍 xff0c 同时发明属于我们的游戏 我们十分会玩 xff1a 用树枝做成 39 x1f3f9 39 我们可以用树枝做出任何东西 xff0c 除 3
  • Spring 4 支持的 Java 8 特性

    Spring 框架 4 支持 Java 8 语言和 API 功能 在本文中 xff0c 我们将重点放在 Spring 4 支持新的 Java 8 的功能 最重要的是 Lambda 表达式 xff0c 方法引用 xff0c JSR 310的日
  • 别再问我阿里面试流程了!!!P8 面试官 花了一个月整理了这份 4000 字的 面试流程

    本文转自我的一个同事 程序亦非猿 xff0c 他是社招进入阿里的 xff0c 花了几个星期整理了一下阿里面试的全流程 xff0c 吐血推荐收藏啊 文中的我指的是 程序亦非猿 写在前面 xff0c 本文的内容不是阿里官方出品 xff0c 只是
  • 作为一技术人员,面试前都需要做哪些准备?

    前言 面试前对目标公司 xff0c 岗位要求及面试流程有所了解 xff0c 这样才可以有针对性的突破 xff0c 我们来看以下几个方面 xff0c 相信可以帮助大家解决大部分求职迷茫的问题 第一 xff0c 常见的技术人员发展路径 和竞争要
  • 面试专场:spring+jvm+微服务+kafka+MongoDB五类面试题

    三面大概九十分钟 xff0c 问的东西很全面 xff0c 需要做充足准备 xff0c 就是除了概念以外问的有点懵逼了 xff08 呜呜呜 xff09 回来之后把这些题目做了一个分类并整理出答案 xff08 强迫症的我 狂补知识 xff09
  • jsoninclude.include.non_null 不起作用问题

    在开发过程中 xff0c 遇到在属性上加jsoninclude include non null注解 xff0c 有些属性起了作用 xff0c 有些却没有起作用 xff0c 下面使用代码简要说明一下 xff1a 64 Data public
  • 手把手 从零开始学习JAVA(入门基础)

    1 搭建JAVA开发环境 卸载JDK xff08 未安装的请忽略 xff09 将JDK的安装目录删除删除JAVA HOME以及CLASS PATH 环境变量删除PATH下与JAVA HOME以及CLASS PATH有关的环境变量 安装JDK
  • Java学习路线图(如何快速学Java)

    不知不觉从初学Java到现在已经8年了 xff0c 今天在这里给刚入门和入门不久的小伙伴们一些建议 可能总结的不是很详细 xff0c 但给出了一个大概的学习路线 希望对大家有帮助哈 如何快速学Java 这里我以Java EE Jakarta
  • 一位入职蚂蚁金服,年薪 180 万的大佬扔给我的笔记,看完发现差距不止一点点!

    前言 2020 终于迎来了最后的一个月 xff0c 这一年 xff0c 全世界都不安定 xff0c 被疫情包围 xff0c 渐渐治愈和免疫 xff0c 国内虽然看着和往常没有多大的区别 xff0c 但对于经济的冲击 xff0c 不知道又倒退
  • 清华师哥丢了个在Github下载量50万+的项目给我,让(附源码下载地址)

    一个Java企业应用开源框架 xff0c 使用经典技术组合 xff08 SpringBoot2 x MyBatis Vue xff09 xff0c 包括核心模块如 xff1a 组织机构 角色用户 权限授权 数据权限 代码生成 定时任务等 企
  • 七条自学路线,自学到底能不能行?能不能拿到 40W 年薪?

    JAVA 自学之路 一 xff1a 学会选择为了就业 xff0c 不少同学参加各种各样的培训 决心做软件的 xff0c 大多数人选的是 java xff0c 也有一些选择了手机 嵌入式 游戏 3G 测试等 那么究竟应该选择什么方向呢 xff
  • 手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

    Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案 xff0c 是阿里巴巴开源中间件与 Spring Cloud 体系的融合 Springcloud 和 Srpingcloud Alibaba 区别 xff1
  • 兵棋推演系统软件开发方法有哪些呢

    兵棋推演系统软件开发方法有哪些呢 兵棋推演系统北京软件开发公司针对 B S 架构及先进的多想定 多进程以及多方推演技术进行研究 xff0c 实现了基于 B S 架构的兵棋推演系统 该系统使用便捷 xff0c 只需通过浏览器访问系统即可 兵棋
  • 工厂生产设备全生命周期管理系统软件

    工厂生产设备全生命周期管理系统软件 设备全生命周期管理系统是解决当下设备管理问题 xff0c 实现设备效能利用最优化的重要举措 设备全生命周期管理系统传统意义上的设备管理系统或软件 xff0c 往往局限在业务层面和主数据层面 然而 xff0
  • 2万字系统总结,带你实现 Linux 命令自由?还不赶紧进来学习

    2万字系统总结 xff0c 带你实现 Linux 命令自由 还不赶紧进来学习 前言 Linux 的学习对于一个程序员的重要性是不言而喻的 前端开发相比后端开发 xff0c 接触 Linux 机会相对较少 xff0c 因此往往容易忽视它 但是
  • ENVI 5.3遥感(无人机)影像的镶嵌(拼接)

    图像镶嵌 xff0c 对一幅或若干幅图像通过预处理 几何镶嵌 色调调整 去重叠等处理 xff0c 镶嵌到一起生成一幅大的图像的影像处理方法 要求是尽量是镶嵌后的影像没有镶嵌缝 图像质量不下降 色彩均衡等 ENVI5 3的图像镶嵌功能可提供交
  • NotePad++ XMLTools 插件离线安装

    在使用NotePad 43 43 时 xff0c 在某些情形下 xff0c 需要格式化Xml格式内容 xff0c 可以使用Xml Tools插件 xff0c 注意下载安装包时 xff0c 需下载与NotePad 43 43 像匹配版本的插件

随机推荐

  • errors_impl.AlreadyExistsError: Another metric with the same name already exists.

    errors impl AlreadyExistsError Another metric with the same name already exists 今天在导包keras包时 xff0c 总是报上面这个错误 xff0c 说已经ke
  • docker-compose 中 volumes、environment、privileged、network_mode的使用

    privileged xff1a 用来给容器root权限 xff0c 不安全的environment xff1a 设置容器中的环境变量volumes xff1a 用来存储docker持久化的数据 xff0c 启动tomcat容器后 xff0
  • 普通程序员如何逆袭,达到财富自由?

    这两天闲逛知乎 xff0c 发现了一个有趣的问题 xff1a 大部分人的回答大概率无非这两种模式 xff1a 1 去大厂 混到管理层或者高P xff0c 拿大量股权 xff0c 财务自由 这个模式还挺常见的 xff0c 基本上阿里P8能到年
  • intel realsense SR300 深度图像和彩色图像对齐

    深度图像和彩色图像对齐 原因 xff1a 由于RGB图像数据与深度图像数据的空间坐标系是不同的 xff0c 前者的原点是RGB摄像头 xff0c 后者的原点是红外摄像头 xff0c 因此两者会有相应的误差 没对齐之前的结果如下图所示 xff
  • CMakeLIsts.txt与Makefile的区别

    CMake是一个跨平台的安装 编译 工具 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 能测试编译器所支持的C 43 43 特性 类似UNIX下的automake CMake 使
  • linux socket编程

    1 网络中进程之间如何通信 进程通信的概念最初来源于单机系统 由于每个进程都在自己的地址范围内运行 xff0c 为保证两个相互通信的进程之间既互不干扰又协调一致工作 xff0c 操作系统为进程通信提供了相应设施 xff0c 如 UNIX B
  • linux环境下如何卸载一路赚钱(yilu/mservice)

    一 删除定时任务 xff1a sudo crontab l u root 2 gt dev null grep v mservice sudo crontab u root 二 停止服务 对于ubuntu以及centos 7的用户 serv
  • 【图像处理】多帧降噪算法

    本文参考论文 xff1a Denoising image sequences does not require motion estimation http citeseerx ist psu edu viewdoc download do
  • VINS-Fusion初始化------IMU与Camera外参旋转标定,IMU角速度偏置标定,重力向量、单目尺度标定

    本文基于VINS Fusion解释VIO系统的初始化 xff0c 包括在线标定IMU Camera的外参旋转 xff0c IMU角速度偏置 xff0c 重力方向 xff0c 单目尺度 单目初始化相比于双目 xff0c 多一个构建SFM问题优
  • 视觉惯性里程计Visual–Inertial Odometry(VIO)概述

    本文主要来自于博客园关于知乎的讨论 链接如下 xff1a Visual Inertial Odometry VIO
  • IBM Was 打补丁记录

    0 拷贝解压ifph52925升级包 通过FTP工具 xff0c 把压缩包传到服务器 xff0c unzip d test01 9 0 0 0 ws was ifph52925 zip 1 停掉was 服务 ps ef grep was k
  • 阿里云服务器远程桌面安装

    阿里云服务器远程桌面安装 环境说明 xff1a CentOS 8 3 一 安装桌面环境 root用户下执行命令 yum grouplist yum groupinstall y span class token string 34 Serv
  • STM32与Futaba遥控器进行S.Bus的通讯程序

    Futaba xff08 日本双叶电子工业 xff0c 戏称 扶他爸 xff09 的遥控器用航模中使用较为广泛的遥控器 S Bus则是Futaba公司提出的舵机控制总线 本篇博文主要以T6K为对象 xff0c 介绍STM32与S Bus协议
  • c++ 小知识点记录

    数据类型 数据类型类型说明符位数取值范围整型int32 2147483648 43 2147483647短整型short int16 32767 43 32768长整型long int32 2147483648 43 2147483647单
  • makefile简明教程

    makefile 主要是编译就是用来编译源文件的 一个工程中的源文件不计其数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c makefile定义了一系列的规则来指定哪些文件需要先编译 xff0c 哪些文件需要后编译 xf
  • SLAM 定位和导航

    码一篇文章后面看 xff1a gt https www cnblogs com hiram zhang p 10416081 html
  • 开发工具及环境配置

    一 jdk下载 安装与环境变量配置 1 下载 xff08 1 xff09 打开下载网址Java Downloads Oracle或直接搜索Oracle JDK下载 xff08 2 xff09 根据电脑系统 xff08 win linux等
  • ros2中 用python编写action 的service和client

    第一步 xff1a 定义请求反馈的变量 主要参考官网网站 xff1a Writing an action server and client C 43 43 ROS 2 Documentation Rolling documentation
  • TX2自动刷机视频教程

    TX2自动刷机视频教链接https v qq com x page b0515967lbr html
  • python 中 机器学习算法 --决策树

    文章目录 思维脑图3 1 2 用pandas加载数据集3 1 3 清洗数据集现在计算这些的实际值主队和客队最后一场比赛赢了吗 xff1f 3 2 决策树3 2 1 决策树中的参数3 2 2 决策树的使用 3 3 体育赛事结果预测 3 4 随