- 博客(37)
- 收藏
- 关注
原创 泰坦尼克号幸存者预测(案例)----决策树版
因为特征和标签都在一个表上,所以得把特征和标签分开。并且用data.info()去查看数据是否有缺失。这样只能一次调一个参数,所以有了下面的网格搜索。把object处理为数字,因为只能处理数字。训练数据,(这样划分偶然性很强)把数据分为测试集和训练集。所以我们得填补缺失值。把不需要的特征删除。
2023-05-08 22:00:02
1054
原创 机器学习决策树、回归树 sklearn-day1
1、模块2、sklearn基本建模流程其中criterion参数有entropy、gini(默认)。其中pi∣t代表标签分类i在节点t上所占的比例。注意,当使用信息熵时,sklearn实际计算的是基于信息熵的信息增益(Information Gain),即父节点的信息熵和子节点的信息熵之差。比起基尼系数,。但是在实际使用中,信息熵和基尼系数的效果基本相同。信息熵的计算比基尼系数缓慢一些,因为基尼系数的计算不涉及对数。
2023-05-08 12:19:54
368
原创 机器学习画图工具(1)
pd.to_datetime()//表示把那个日期的格式转化成上图的日期的格式。import matplotlib.pyplot as plt //matplotlib.pyplot画可视化的库plt.plot(x,y) //画x轴,y轴plt.xticks(rotation=45)//表示x下面的数字倾斜45°plt.show() //显示plt.xlabel('month')plt.ylabel('Un……')plt.title('Mon……')plt.figure() //.
2022-01-27 17:40:36
1723
原创 pandas
food_info = pandas.read_csv("food_info.csv") //读取一个csv后缀的文件food_info.head() //显示前5条刚刚读取到的数据food_info.head(3) //显示前3条刚刚读取到的数据food_info.tail() ////显示后5条刚刚读取到的数据food_info.columns //表示列名food_info.shape //表示维度food_info.loc[0] //表示第一行的数据food_info.loc[1:
2022-01-25 10:59:32
1339
原创 开始记录机器学习的库函数——Numpy
import numpyworld = numpy.genfromtxt("world.txt",delimiter=",",dtype=str)//第一个参数是要读取文件的位置,第二个参数是文件内分隔的符号,第三是用什么样子的类型去读取print(type(world)) //当前变量是什么结构print(help(numpy.genfromtxt)) //打印一下帮助文档。也就是这个函数的参数怎么传啥的。vector = numpy.array([1,2,3,4])//是创建一个array数组
2022-01-24 11:22:06
969
原创 没总结的二分模板
借鉴于:此处最大值最小问题。int bsearch_1(int l, int r){ while (l < r) { int mid = l + r >> 1; if (check(mid)) r = mid; else l = mid + 1; } return l;}最小值最大问题int bsearch_2(int l, int r){ while (l < r) {
2021-07-16 11:19:46
61
原创 求因数个数
int count(int n){ int s = 1; for(int i = 2 ; i * i <= n ; i++) { if(n % i == 0) { int a = 0 ; while(n % i == 0) { n /= i; a++; } s =
2021-07-13 14:35:03
123
原创 Atcoder abc 208场 A~D
Rolling Dice:A题思路:可以摔a次骰子,得到的最小值肯定是都为1时,得到的最大值肯定是都为6时,在这之间都能得到。#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<math.h>#include<iostream>#include<cmath>#include<queue>#inclu
2021-07-04 22:37:11
287
1
原创 注意0x3f3f3f3f的范围!!!
0x3f3f3f3f的十进制是1061109567,是10^9级别的,居然不知道这个被卡了我差不多一小时,得记住了!!!int范围的无穷大!
2021-06-13 08:25:14
195
原创 atcoder arc 122 a~b题Many Formulae、Insurance
A题链接题目大意:不能存在两个及两个以上的减号,所有满足条件的式子之和。题目思路:当时考试想到一半,就感觉编码能力不太会,然后就没做,首先我们定义dp[N][2],这种选或不选的问题,一般都是这样定义的;其中:dp[i][0]表示第i个为+,(这里我们可以把每个数看成是一个符号,自己在第一个数前面加了一个+。)因为这样看比较容易一点。dp[i][1]表示第i个为-;当时就想到这里。但是没去写…………这时候成功了一半了,然后我们还需要定义一个cnt[i][2]去记录数量,cnt[i][0]表示第i
2021-06-13 07:46:59
385
原创 一些竞赛模板
返回因子数ll dcpCount(ll x){ ll ans=1; for(ll i=2;i*i<=x;i++) { if(x%i==0) { ll temp=0; while(x%i==0) { x/= i; temp++; } ans*=(temp+1);
2021-06-06 17:51:22
72
原创 三个函数ceil()、floor()、round()
double x;int fx = floor(x);//向下取整函数int cx = ceil(x);//向上取整函数int rx = round(x);//四舍五入函数
2021-06-03 16:13:37
104
原创 arc121 2nd Greatest Distance
题目链接题目大意。输入的x,y两两数对max(|xi−xj|,|yi−yj|)。找一个次大值。题目思路。我用sx存按x排序的,用sy存按y排序的。因为求次大值,所以我们先按x排序,排序之后,我们取前面两个数sx[1],sx[2],和后面两个sx[n-1].sx[n]。两两求一下那个max,这样我们就能得到4个值。这时那个次大值如果落在x这边的话,那肯定在这4个数中,否则就会落在y那边。然后我们再按y排序,也是同x的思路一样,但这里就有一个很恶心的地方就是屏蔽掉前面x排序已经用过的数对。我是用boo
2021-06-02 16:39:26
193
原创 map 中 pair的使用
map<int,int> q;即q[1]=1;map<string,int> q;q[“abc”]=1;cout<<q[“abc”]<<endl;------->>> 输出1。map<pair<int,int>,int> q;q[{1,1}]=1;cout<<q[{1,1}]<<endl;------->>> 输出1。...
2021-06-02 16:22:43
1213
原创 upper_bound()和lower_bound()操作,stl库
利用的是二分查找。lower_bound(l,r,x)和upper_bound(l,r,x)。l 起始地址r 结束地址x 要查找的数值返回值low_bound()返回大于或等于x的第一个元素位置。如果所有元素都小于x,则返回r的位置(地址).如果所有元素都小于x,则r就越界了。函数upper_bound()返回的在前闭后开区间查找的关键字的上界,返回大于val的第一个元素位置(地址)。后面和第一个类似。使用时:int d[1000010];int w=upper_bound(d+1,d+l
2021-05-31 21:27:40
112
原创 Two Anagrams 记录这个棒的操作
参考了题解的程序。之前都不知道string还能用sort去排序,太优秀了!!!学费了!!!#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<iostream>#include<cmath>#include<queue>#include<vector>#define IOS ios::sync_w
2021-05-26 21:34:53
75
原创 Plus Matrix atcoder arc115 TB
题目链接题目大意:对所有C数组,都有C(i,j)=Ai+Bj。是否存在一个序列A,B。如果存在则输出Yes并且输出A序列和B序列,否则就输出一个No就行了。(但这个题隐含了A,B的每个元素都为非负数这个条件。所以导致我错了好几次)。题目思路:首先我们得先判断是否存在A,B序列。这个判断我们可以用对角线来判断,对角线所有元素相加*n==所有元素相加。(为什么是对的呢?我想是因为对角线上面对所有A,B的元素都用上了,偶然性不存在(我之前听同学说过有个类似题别人是这样写的,因为这个等式永远存在,所以我就没证明
2021-05-26 18:19:44
262
1
原创 Dice in Line
题目链接这题目题意理解了之后基本就很容易了。题目大意:首先第一句话想表达的意思就是,有n个骰子。pi是pi面的骰子(由1,2…,pi组成)。第二句话表达的意思就是求连续k个相邻的骰子期望的最大和。对于骰子期望:假设为一个6面骰,期望就为(1+2+3+4+5+6)/6。所以对于一个pi我们有(1+2+…+pi)/pi=[(1+pi)/2*pi]/pi=(1+pi)/2。(不是吧,等差数列你都看不懂吗?)思路:用前缀和去记忆前i个骰子期望相加。#include<cstdio>#inclu
2021-05-25 17:21:51
206
1
原创 AtCoder Group Contest
原题链接此题目主要是意思表达得不是很清楚,理解题意就很简单了。题目大意:给出3*n个数,将他们分组,每组三个数,问怎样分配使得中位数的和最大,输出最大值。思路就是:先排个序,这样我们可以证明中位数第一次取3n-1,第二次取3n-3…的和是最大的。(证明就省略了,好好想一下就能想清楚)。代码如下:#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include&l
2021-05-24 18:54:34
93
原创 Modulo Summation atcoder abc103
此题链接题意,求f(m)的最大值,f(m)=(m mod a1)+(m mod a2)+…+(m mod an)。思路:想一想我们要求f(m)的最大值,那我们是不是要满足每一个数都能取到最大值。每个位置的最大值就是自己此数-1,(所以我由此入坑,人呆滞了点,居然想到去求所有数最小公倍数-1再mod,成功炸掉)。因为维护想要的东西都是一个,根本每不要求最小公倍数!!!代码如下:#include<cstdio>#include<cstring>#include<algo
2021-05-24 11:04:23
501
7
原创 aab aba baa abc202
原题链接输入a,b,k;题目大意:存在a个‘a’,b个‘b’,要我们求第k个的字典序。(从小到大数)。思路:dp[i][j]表示前i个字符中存在j个b字符的总字典序个数的变化。先打个表,即组合数的表:C(i,j)=C(i-1,j-1)+C(i-1,j)。#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<iostream>#inclu
2021-05-23 18:25:07
561
5
原创 atcoder AGC040 A题><
原题链接题目大意:给你一串字符s,如果si=’<’: ai<a(i+1)si=’>’: ai>a(i+1)求所有a相加的最小。解题思路:模拟我们先从前往后把所有的<都处理一遍,用a[i]来存储第i个位置的数的大小,即用个cnt标记,如果存在连续的就加1,不存在连续的就cnt为0。然后我们又从后往前扫一遍,这个就把>转化成了<来处理。如果s[i]‘>’,我们就用a[i]=a[i+1]+1来更新。但这个有一个特殊情况要考虑,就是如果s[i-1]’
2021-05-22 19:20:15
641
6
原创 Sum of difference 2021-5-21
题目链接题目大意就相当于:从第一个数开始,依次与后面的数的差的绝对值之和,如何又从第二个数开始依次往后……。用平均数来想:题目思路:因为有绝对值的支撑,并且每两个数都存在两两对应关系,所以我们就可以排个序。排序之后,从第i个数开始往后的话,我们可以把后面i~n个数相加(用个从后往前的前缀和维护)。我们就可以求abs(cnt[i]*(n-i)-sum[i+1])。(因为不排序的话,会产生中和效应(我自己想的词,即存在一个比cnt[i]大的数,一个比cnt[i]小的数,相加之后就会中和一部分))#in
2021-05-21 20:12:52
141
原创 2021-5-21 GCD on Blackboard
题目链接题目大意:一组数,可以任意修改一个数,改成范围在1~1e9的数,求这个数列的最大公约数。题目思路:就相当于把这个数去掉,求其它所有数的最大公约数。用两个数组:一个为前缀数组(前i个数的最大公约数),一个为后缀数组(后i个数的最大公约数)。代码部分:#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<iostream>#inc
2021-05-21 19:09:38
240
原创 2021-5-21 atcoder arc 086
题目链接题意:高桥有N个球。最初,整数Ai写在第i个球上。他想重写一些球上的整数,以便在N个球上最多写K个不同的整数。(即多个球上是一个同样大小的数也算一个数)求高桥重写整数所需的最小球数。解题思路:看数据范围我们可了解到,可以直接暴力,且只能一重循环的暴力。因为题意的最多不能超过k个不同的整数,所以我们可以用一个相当于滑动区间的想法。要求算所需重写的最小球数,从前扫描一遍,如果滑动区间内的数的数量还不足k的话,我们就往里面添加。否则我们就把区间里面最小的那个数提取出来和刚来的数作比较……。存储
2021-05-21 17:50:36
103
1
原创 2021-5-21 atcoder arc 118 A
原题链接刚开始题意没理解(我觉得就是他题意表达不清楚)题意就是找到第n个数,不能用其它的一个数乘以税率表示出来。#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<iostream>#include<cmath>#define IOS ios::sync_with_stdio(false);cin.tie();cout.ti
2021-05-21 15:48:06
119
原创 2021-5-13 线性筛法(质数)
埃式筛就相当于每找到一个质数就一直翻倍筛掉。//线性筛法-O(n), n = 1e7的时候基本就比埃式筛法快一倍了//算法核心:x仅会被其最小质因子筛去void get_prime(int x) { for(int i = 2; i <= x; i++) { if(!st[i]) prime[cnt++] = i; for(int j = 0; prime[j] <= x / i; j++) { //对于任意一个合数x,假.
2021-05-13 16:04:40
68
原创 2021-5-12 C - Maximal Value
题目链接:点这题意:给出你b数组,求a数组所有元素的和最大值,a和b数组的关系满足bi≥max(ai,ai+1)题目思路:假设 bi>bi+1 即max(ai,ai+1)>max(ai+1,ai+2) 此情况肯定为bi=ai,bi+1=ai+2.若 bi<=bi+1 即max(ai,ai+1)<=max(ai+1,ai+2) 那么ai+1=bi+1,ai=bi,ai+2=bi+1代码如下:#include<algorithm>#include<iost
2021-05-12 20:12:07
194
原创 2021-5-12 Odd vs Even
题目链接题目大概意思:给定一个正整数N。N的正奇数除数和正偶数除数哪个更多您将得到T个测试用例。解决每一个问题题目思路:假设我们输入的数为奇数:只能是奇数乘奇数才能使n为奇数,此情况的奇数个数必定比偶数大。如果我们输入的数为偶数:我们可以化为 n=2^j*a(其中a为奇数)。j为1时奇偶数相等,j>1时偶数大于奇数。代码如下:#include<iostream>#include<algorithm>#include<cmath>using name
2021-05-12 17:18:57
161
原创 2021-5-11 atcoder C - Replacing Integer
本题题目链接本题题目的大概意思是:令res=|n-k|, 可以一直res=|res-k|。我们做这题得分三种情况:n<k时, 模拟一下子过程: |n-k|=k-n;|k-n-k|=n;|n-k|=k-n;模拟到这一步就应该能看出来求的就是 k-n和n的最小值。n>k时,我们可以先令res=n%k,此时就和第一种情况一样了,求res和k-res的最小值。代码如下:#include<iostream>#include<cmath>using namesp
2021-05-11 18:30:26
185
原创 畅通工程续 hdu 杭电1874 dijkstra堆优化版最短路问题
原题链接堆优化版dijkstra 求最短路问题,这题目最需要注意的就是初始化,因为是多组案例。类似模板题。A的第一道最短路问题,真爽!!!#include<iostream>#include<cstring>#include<queue>#include<set>#include<algorithm>using namespace std;typedef pair<int,int> pll;const int N=2
2021-05-07 15:33:16
100
原创 C - Minimize the Permutation 2021/4/26
此题题目题意:您最多可以执行n−1具有给定排列的操作(可能根本不执行任何操作)。第i次操作允许您交换位置i和i+1上给定排列的元素。每个操作最多只能执行一次。这些操作可以按任意顺序执行。找到输出字典序最小的。题解思路:我们从最后拿一个数,从后往前推一遍,如果比此数要小,就交换,否则,我们就换那个比此数更小的数往前推,并且把次数记录到b数组。推一遍之后,我们最小的那个数一定到最前面了。但我们记录的位置是还没有操作的,使用单个拿出来操作就行了,至于为什么要从后往前呢?看看这组案例 4 3 2 1 5#i
2021-04-26 14:10:26
106
原创 B - Packets 2021/4/25
题目来源:https://vjudge.z180.cn/contest/435200#problem/BB - Packets题意是:给你那么多个盒子,那些小盒子可以组合在一起放在大盒子里面去,盒子的形状不能变化。(所用盒子数量最少)思路:4 * 4,5 * 5,6 * 6(类)的盒子放在最大的66的只能放一个,其它空的地方用小盒子去填补。但特殊点在3 * 3的盒子上,因为33的盒子放到6*6的盒子里面的话可以放1,2,3,4个,这其中补充小盒子也不一样。```cpp#include<io
2021-04-25 20:48:49
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人