热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

年赚百万游戏主播,玩转Python后:几行代码轻松“吃鸡”附源码

大吉大利,准备吃鸡!你是否玩儿了好几个月的吃鸡,依旧是落地成盒?是否常常不得知自己如何被打、莫名其妙的挂了?还

大吉大利,准备吃鸡!

你是否玩儿了好几个月的吃鸡,依旧是落地成盒?


是否常常不得知自己如何被打、莫名其妙的挂了?

u=1068590703,618002626&fm=27&gp=0.jpg


还没有吃过鸡/(ㄒoㄒ)/~~总是不明不白的就被别的玩家杀了


!!!∑(゚Д゚ノ)ノ能进前二十就已经很不错了


今天小编带来了福利奥O(≧▽≦)O

u=1400736782,2272112899&fm=27&gp=0.jpg

大吉大利,今晚吃鸡~

打人时要坚持一个原则,先打对你来说最危险的目标。


(不一定是近点的目标,大部分情况是先近后远)

image

那么我们就用 Python 和 R 做数据分析来回答以下的灵魂发问?

首先来看下数据:

image


image

一、跳哪儿危险?

对于我这样一直喜欢苟着的良心玩家,在经历了无数次落地成河的惨痛经历后,我是坚决不会选择跳P城这样楼房密集的城市,穷归穷但保命要紧。所以我们决定统计一下到底哪些地方更容易落地成河?我们筛选出在前100秒死亡的玩家地点进行可视化分析。激情沙漠地图的电站、皮卡多、别墅区、依波城最为危险,火车站、火电厂相对安全。绝地海岛中P城、军事基地、学校、医院、核电站、防空洞都是绝对的危险地带。物质丰富的G港居然相对安全。

image


image

1 import numpy as np
2 import matplotlib.pyplot as plt
3 import pandas as pd
4 import seaborn as sns
5 from scipy.misc.pilutil import imread
6 import matplotlib.cm as cm
7
8 #导入部分数据 9deaths1 = pd.read_csv("deaths/kill_match_stats_final_0.csv")
10 deaths2 = pd.read_csv("deaths/kill_match_stats_final_1.csv")
11
12 deaths = pd.concat([deaths1, deaths2])
13
14 #打印前5列,理解变量
15 print (deaths.head(),'\n',len(deaths))
16
17 #两种地图
18 miramar = deaths[deaths["map"] == "MIRAMAR"]
19 erangel = deaths[deaths["map"] == "ERANGEL"]
20
21 #开局前100秒死亡热力图22 position_data = ["killer_position_x","killer_position_y","victim_position_x","victim_position_y"]
23 for position in position_data:
24    miramar[position] = miramar[position].apply(lambda x: x*1000/800000)
25    miramar = miramar[miramar[position] != 0]
26
27    erangel[position] = erangel[position].apply(lambda x: x*4096/800000)
28    erangel = erangel[erangel[position] != 0]
29
30 n = 50000
31 mira_sample &#61; miramar[miramar["time"] < 100].sample(n)
32 eran_sample &#61; erangel[erangel["time"] < 100].sample(n)
33
34 # miramar热力图35bg &#61; imread("miramar.jpg")
36 fig, ax &#61; plt.subplots(1,1,figsize&#61;(15,15))
37 ax.imshow(bg)
38 sns.kdeplot(mira_sample["victim_position_x"], mira_sample["victim_position_y"],n_levels&#61;100, cmap&#61;cm.Reds, alpha&#61;0.9)
39
40 # erangel热力图41bg &#61; imread("erangel.jpg")
42 fig, ax &#61; plt.subplots(1,1,figsize&#61;(15,15))
43 ax.imshow(bg)
44 sns.kdeplot(eran_sample["victim_position_x"], eran_sample["victim_position_y"], n_levels&#61;100,cmap&#61;cm.Reds, alpha&#61;0.9)

二、苟着还是出去干&#xff1f;

我到底是苟在房间里面还是出去和敌人硬拼&#xff1f;这里因为比赛的规模不一样&#xff0c;这里选取参赛人数大于90的比赛数据&#xff0c;然后筛选出团队team_placement即最后成功吃鸡的团队数据&#xff1a;

  1. 先计算了吃鸡团队平均击杀敌人的数量&#xff0c;这里剔除了四人模式的比赛数据&#xff0c;因为人数太多的团队会因为数量悬殊平均而变得没意义&#xff1b;

  2. 所以我们考虑通过分组统计每一组吃鸡中存活到最后的成员击杀敌人的数量&#xff0c;但是这里发现数据统计存活时间变量是按照团队最终存活时间记录的&#xff0c;所以该想法失败&#xff1b;

  3. 最后统计每个吃鸡团队中击杀人数最多的数量统计&#xff0c;这里剔除了单人模式的数据&#xff0c;因为单人模式的数量就是每组击杀最多的数量。最后居然发现还有击杀数量达到60的&#xff0c;怀疑是否有开挂。想要吃鸡还是得出去练枪法&#xff0c;光是苟着是不行的。

image


image

1 library(dplyr)
2 library(tidyverse)
3 library(data.table)
4 library(ggplot2)
5 pubg_full <- fread("../agg_match_stats.csv")
6 # 吃鸡团队平均击杀敌人的数量
7 attach(pubg_full)
8 pubg_winner <- pubg_full %>% filter(team_placement&#61;&#61;1&party_size<4&game_size>90) 
9 detach(pubg_full)
10 team_killed <- aggregate(pubg_winner$player_kills, by&#61;list(pubg_winner$match_id,pubg_winner$team_id), FUN&#61;"mean")
11 team_killed$death_num <- ceiling(team_killed$x)
12 ggplot(data &#61; team_killed) &#43; geom_bar(mapping &#61; aes(x &#61; death_num, y &#61; ..count..), color&#61;"steelblue") &#43;
13  xlim(0,70) &#43; labs(title &#61; "Number of Death that PUBG Winner team Killed", x&#61;"Number of death")
14
15 # 吃鸡团队最后存活的玩家击杀数量
16 pubg_winner <- pubg_full %>% filter(pubg_full$team_placement&#61;&#61;1) %>% group_by(match_id,team_id)
17 attach(pubg_winner)
18 eam_leader <- aggregate(player_survive_time~player_kills, data &#61; pubg_winner, FUN&#61;"max")
19 detach(pubg_winner)
20
21 # 吃鸡团队中击杀敌人最多的数量22 pubg_winner <- pubg_full %>% filter(pubg_full$team_placement&#61;&#61;1&pubg_full$party_size>1)
23 attach(pubg_winner)
24 team_leader <- aggregate(player_kills, by&#61;list(match_id,team_id), FUN&#61;"max")
25 detach(pubg_winner)
26 ggplot(data &#61; team_leader) &#43; geom_bar(mapping &#61; aes(x &#61; x, y &#61; ..count..), color&#61;"steelblue") &#43;
27  xlim(0,70) &#43; labs(title &#61; "Number of Death that PUBG Winner Killed", x&#61;"Number of death")
28

三、哪一种武器干掉的玩家多&#xff1f;

运气好挑到好武器的时候&#xff0c;你是否犹豫选择哪一件&#xff1f;从图上来看&#xff0c;M416和SCAR是不错的武器&#xff0c;也是相对容易能捡到的武器&#xff0c;大家公认Kar98k是能一枪毙命的好枪&#xff0c;它排名比较靠后的原因也是因为这把枪在比赛比较难得&#xff0c;而且一下击中敌人也是需要实力的&#xff0c;像我这种捡到98k还装上8倍镜但没捂热乎1分钟的玩家是不配得到它的。

image

image


image

1 #杀人武器排名
2 death_causes &#61; deaths[&#39;killed_by&#39;].value_counts()
3
4 sns.set_context(&#39;talk&#39;)
5 fig &#61; plt.figure(figsize&#61;(30, 10))
6 ax &#61; sns.barplot(x&#61;death_causes.index, y&#61;[v / sum(death_causes) for v in death_causes.values])
7 ax.set_title(&#39;Rate of Death Causes&#39;)
8 ax.set_xticklabels(death_causes.index, rotation&#61;90)
9
10 #排名前20的武器
11 rank &#61; 20
12 fig &#61; plt.figure(figsize&#61;(20, 10))
13 ax &#61; sns.barplot(x&#61;death_causes[:rank].index, y&#61;[v / sum(death_causes) for v in death_causes[:rank].values])
14 ax.set_title(&#39;Rate of Death Causes&#39;)
15 ax.set_xticklabels(death_causes.index, rotation&#61;90)
16
17 #两个地图分开取
18 f, axes &#61; plt.subplots(1, 2, figsize&#61;(30, 10))
19 axes[0].set_title(&#39;Death Causes Rate: Erangel (Top {})&#39;.format(rank))
20 axes[1].set_title(&#39;Death Causes Rate: Miramar (Top {})&#39;.format(rank))
21
22 counts_er &#61; erangel[&#39;killed_by&#39;].value_counts()
23 counts_mr &#61; miramar[&#39;killed_by&#39;].value_counts()
24
25 sns.barplot(x&#61;counts_er[:rank].index, y&#61;[v / sum(counts_er) for v in counts_er.values][:rank], ax&#61;axes[0] )
26 sns.barplot(x&#61;counts_mr[:rank].index, y&#61;[v / sum(counts_mr) for v in counts_mr.values][:rank], ax&#61;axes[1] )
27 axes[0].set_ylim((0, 0.20))
28 axes[0].set_xticklabels(counts_er.index, rotation&#61;90)
29 axes[1].set_ylim((0, 0.20))
30 axes[1].set_xticklabels(counts_mr.index, rotation&#61;90)
31
32 #吃鸡和武器的关系
33 win &#61; deaths[deaths["killer_placement"] &#61;&#61; 1.0]
34 win_causes &#61; win[&#39;killed_by&#39;].value_counts()
35
36 sns.set_context(&#39;talk&#39;)
37 fig &#61; plt.figure(figsize&#61;(20, 10))
38 ax &#61; sns.barplot(x&#61;win_causes[:20].index, y&#61;[v / sum(win_causes) for v in win_causes[:20].values])
39 ax.set_title(&#39;Rate of Death Causes of Win&#39;)
40 ax.set_xticklabels(win_causes.index, rotation&#61;90)

四、队友的助攻是否助我吃鸡&#xff1f;

有时候一不留神就被击倒了&#xff0c;还好我爬得快让队友救我。这里选择成功吃鸡的队伍&#xff0c;最终接受1次帮助的成员所在的团队吃鸡的概率为29%&#xff0c;所以说队友助攻还是很重要的&#xff08;再不要骂我猪队友了&#xff0c;我也可以选择不救你。&#xff09;竟然还有让队友救9次的&#xff0c;你也是个人才。

image


image

1 library(dplyr)
2 library(tidyverse)
3 library(data.table)
4 library(ggplot2)
5 pubg_full <- fread("E:/aggregate/agg_match_stats_0.csv") 6 attach(pubg_full)
7 pubg_winner <- pubg_full %>% filter(team_placement&#61;&#61;1)
8 detach(pubg_full)
9 ggplot(data &#61; pubg_winner) &#43; geom_bar(mapping &#61; aes(x &#61; player_assists, y &#61; ..count..), fill&#61;"#E69F00") &#43;
10  xlim(0,10) &#43; labs(title &#61; "Number of Player assisted", x&#61;"Number of death")
11 ggplot(data &#61; pubg_winner) &#43; geom_bar(mapping &#61; aes(x &#61; player_assists, y &#61; ..prop..), fill&#61;"#56B4E9") &#43;
12  xlim(0,10) &#43; labs(title &#61; "Number of Player assisted", x&#61;"Number of death")

五、 敌人离我越近越危险&#xff1f;

对数据中的killer_position和victim_position变量进行欧式距离计算&#xff0c;查看两者的直线距离跟被击倒的分布情况&#xff0c;呈现一个明显的右偏分布&#xff0c;看来还是需要随时观察到附近的敌情&#xff0c;以免到淘汰都不知道敌人在哪儿。

image

1 # python代码&#xff1a;杀人和距离的关系
2 import math 3def get_dist(df): #距离函数
4     dist &#61; []
5    for row in df.itertuples():
6         subset &#61; (row.killer_position_x - row.victim_position_x)**2 &#43; (row.killer_position_y - row.victim_position_y)**2
7         if subset > 0:
8             dist.append(math.sqrt(subset) / 100)
9          else:
10             dist.append(0)
11     return dist
12
13 df_dist &#61; pd.DataFrame.from_dict({&#39;dist(m)&#39;: get_dist(erangel)})
14 df_dist.index &#61; erangel.index
15
16 erangel_dist &#61; pd.concat([erangel,df_dist], axis&#61;1)
17
18 df_dist &#61; pd.DataFrame.from_dict({&#39;dist(m)&#39;: get_dist(miramar)})
19 df_dist.index &#61; miramar.index
20
21 miramar_dist &#61; pd.concat([miramar,df_dist], axis&#61;1)
22
23 f, axes &#61; plt.subplots(1, 2, figsize&#61;(30, 10))
24plot_dist &#61; 150
25
26 axes[0].set_title(&#39;Engagement Dist. : Erangel&#39;)
27 axes[1].set_title(&#39;Engagement Dist.: Miramar&#39;)
28
29 plot_dist_er &#61; erangel_dist[erangel_dist[&#39;dist(m)&#39;] <&#61; plot_dist]
30 plot_dist_mr &#61; miramar_dist[miramar_dist[&#39;dist(m)&#39;] <&#61; plot_dist]
31
32 sns.distplot(plot_dist_er[&#39;dist(m)&#39;], ax&#61;axes[0])
33 sns.distplot(plot_dist_mr[&#39;dist(m)&#39;], ax&#61;axes[1])

六、团队人越多我活得越久&#xff1f;

对数据中的party_size变量进行生存分析&#xff0c;可以看到在同一生存率下&#xff0c;四人团队的生存时间高于两人团队&#xff0c;再是单人模式&#xff0c;所以人多力量大这句话不是没有道理的。

image

七、乘车是否活得更久&#xff1f;

对死因分析中发现&#xff0c;也有不少玩家死于Bluezone&#xff0c;大家天真的以为捡绷带就能跑毒。对数据中的player_dist_ride变量进行生存分析&#xff0c;可以看到在同一生存率下&#xff0c;有开车经历的玩家生存时间高于只走路的玩家&#xff0c;光靠腿你是跑不过毒的。

image

八、小岛上人越多我活得更久&#xff1f;

对game_size变量进行生存分析发现还是小规模的比赛比较容易存活。

image

1 # R语言代码如下&#xff1a;
2 library(magrittr)
3 library(dplyr)
4 library(survival)
5 library(tidyverse)
6 library(data.table)
7 library(ggplot2)
8 library(survminer)
9 pubg_full <- fread("../agg_match_stats.csv")
10 # 数据预处理&#xff0c;将连续变量划为分类变量
11 pubg_sub <- pubg_full %>%
12   filter(player_survive_time<2100) %>%
13   mutate(drive &#61; ifelse(player_dist_ride>0, 1, 0)) %>%
14   mutate(size &#61; ifelse(game_size<33, 1,ifelse(game_size>&#61;33 &game_size<66,2,3)))
15 # 创建生存对象
16 surv_object <- Surv(time &#61; pubg_sub$player_survive_time)
17 fit1 <- survfit(surv_object~party_size,data &#61; pubg_sub)
18 # 可视化生存率
19 ggsurvplot(fit1, data &#61; pubg_sub, pval &#61; TRUE, xlab&#61;"Playing time [s]", surv.median.line&#61;"hv",
20            legend.labs&#61;c("SOLO","DUO","SQUAD"), ggtheme &#61; theme_light(),risk.table&#61;"percentage")
21 fit2 <- survfit(surv_object~drive,data&#61;pubg_sub)
22 ggsurvplot(fit2, data &#61; pubg_sub, pval &#61; TRUE, xlab&#61;"Playing time [s]", surv.median.line&#61;"hv",
23            legend.labs&#61;c("walk","walk&drive"), ggtheme &#61; theme_light(),risk.table&#61;"percentage")
24 fit3 <- survfit(surv_object~size,data&#61;pubg_sub)
25 ggsurvplot(fit3, data &#61; pubg_sub, pval &#61; TRUE, xlab&#61;"Playing time [s]", surv.median.line&#61;"hv",
26            legend.labs&#61;c("small","medium","big"), ggtheme &#61; theme_light(),risk.table&#61;"percentage")

九、最后毒圈有可能出现的地点&#xff1f;

面对有本事能苟到最后的我&#xff0c;怎么样预测最后的毒圈出现在什么位置。从表agg_match_stats数据找出排名第一的队伍&#xff0c;然后按照match_id分组&#xff0c;找出分组数据里面player_survive_time最大的值&#xff0c;然后据此匹配表格kill_match_stats_final里面的数据&#xff0c;这些数据里面取第二名死亡的位置&#xff0c;作图发现激情沙漠的毒圈明显更集中一些&#xff0c;大概率出现在皮卡多、圣马丁和别墅区。绝地海岛的就比较随机了&#xff0c;但是还是能看出军事基地和山脉的地方更有可能是最后的毒圈。

image

1 #最后毒圈位置
2 import matplotlib.pyplot as plt
3 import pandas as pd
4 import seaborn as sns
5 from scipy.misc.pilutil import imread
6 import matplotlib.cm as cm
7
8 #导入部分数据
9 deaths &#61; pd.read_csv("deaths/kill_match_stats_final_0.csv")
10 #导入aggregate数据
11 aggregate &#61; pd.read_csv("aggregate/agg_match_stats_0.csv")
12 print(aggregate.head())
13 #找出最后三人死亡的位置
14
15 team_win &#61; aggregate[aggregate["team_placement"]&#61;&#61;1] #排名第一的队伍
16 #找出每次比赛第一名队伍活的最久的那个player
17 grouped &#61; team_win.groupby(&#39;match_id&#39;).apply(lambda t: t[t.player_survive_time&#61;&#61;t.player_survive_time.max()])
18
19 deaths_solo &#61; deaths[deaths[&#39;match_id&#39;].isin(grouped[&#39;match_id&#39;].values)]
20 deaths_solo_er &#61; deaths_solo[deaths_solo[&#39;map&#39;] &#61;&#61; &#39;ERANGEL&#39;]
21 deaths_solo_mr &#61; deaths_solo[deaths_solo[&#39;map&#39;] &#61;&#61; &#39;MIRAMAR&#39;]
22
23 df_second_er &#61; deaths_solo_er[(deaths_solo_er[&#39;victim_placement&#39;] &#61;&#61; 2)].dropna()
24 df_second_mr &#61; deaths_solo_mr[(deaths_solo_mr[&#39;victim_placement&#39;] &#61;&#61; 2)].dropna()
25 print (df_second_er)
26
27 position_data &#61; ["killer_position_x","killer_position_y","victim_position_x","victim_position_y"]
28for position in position_data:
29     df_second_mr[position] &#61; df_second_mr[position].apply(lambda x: x*1000/800000)
30     df_second_mr &#61; df_second_mr[df_second_mr[position] !&#61; 0]
31
32     df_second_er[position] &#61; df_second_er[position].apply(lambda x: x*4096/800000)
33     df_second_er &#61; df_second_er[df_second_er[position] !&#61; 0]
34
35 df_second_er&#61;df_second_er
36 # erangel热力图
37 sns.set_context(&#39;talk&#39;)
38 bg &#61; imread("erangel.jpg")
39 fig, ax &#61; plt.subplots(1,1,figsize&#61;(15,15))
40 ax.imshow(bg)
41 sns.kdeplot(df_second_er["victim_position_x"], df_second_er["victim_position_y"], cmap&#61;cm.Blues, alpha&#61;0.7,shade&#61;True)
42
43 # miramar热力图
44 bg &#61; imread("miramar.jpg")
45 fig, ax &#61; plt.subplots(1,1,figsize&#61;(15,15))
46 ax.imshow(bg)
47 sns.kdeplot(df_second_mr["victim_position_x"], df_second_mr["victim_position_y"], cmap&#61;cm.Blues,alpha&#61;0.8,shade&#61;True)

福利&#xff1a;需要Python的各方面资料&#xff0c;就私信小编&#xff0c;随时给予小伙伴们最大的帮助~


每一个 点赞 &#43; 转发 都是对小编的支持&#xff0c;万分感谢 ★,::‧(&#xffe3;▽&#xffe3;)/‧:‧°★* 需要完整源码后台私信暗号666点击链接找我


推荐阅读
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
author-avatar
闹闹依旧不闹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有