Python+人工智能基础班(通俗易懂版教学)

文章目录

  • 一、环境及工具包的介绍
  • 二、Python基本语法
  • 三、matplotlib、numpy、pandas实操
  • 四、机器学习介绍
  • 五、机器学习线性回归
    • 线性回归实战准备
    • 单因子线性回归实战
    • 多因子线性回归实战
  • 六、机器学习逻辑回归
    • 使用线性回归解决分类任务
    • 使用逻辑回归解决分类任务
    • 逻辑回归实战:考试通过预测
  • 七、机器学习聚类分析
    • 常用聚类算法
    • 预测结果矫正
    • KMeans算法实战
    • KNN算法实战
    • Meanshift算法实战
  • 八、机器学习决策树
    • 决策树介绍
    • 决策树实战准备
  • 九、机器学习异常检测
    • 异常检测介绍
    • 异常数据检测实战准备
  • 十、机器学习主成分分析PCA
    • 主成分分析介绍
    • 主成分分析实战准备
  • 十一、深度学习之多层感知机MLP
    • 多层感知机MLP介绍
    • 多层感知机MLP实现单一非线性分类
    • 多层感知机MLP实现多分类预测
  • 十二、总结

Python+人工智能基础班(通俗易懂版教学)_人工智能基础入门教程_人工智能机器学习

一、环境及工具包的介绍

后续的启动都是由Anaconda中直接launch来启动jupyter notebook
开发环境
在这里插入图片描述
在这里插入图片描述
工具包
在这里插入图片描述

二、Python基本语法

1. 基本运算
在这里插入图片描述
2. 列表生成
在这里插入图片描述
3. 函数
在这里插入图片描述
4. 模块引入
在这里插入图片描述

三、matplotlib、numpy、pandas实操

1. Matplotlib实现可视化
matplotlib使用介绍
下载 打开Anaconda Powershell prompt命令窗口下载
在这里插入图片描述
使用
在这里插入图片描述
在这里插入图片描述
2. numpy实现数组运算
numpy使用介绍
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3. pandas实现数据快速的导入导出
pandas使用介绍
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、机器学习介绍

1. 机器学习的基本概念
在这里插入图片描述
这就是机器学习,计算机不用你告诉它根据什么函数计算出来的,计算机自己会拟合出函数,然后根据自己的函数计算出结果。

2. 机器学习的类别
1. 监督机器学习算法
当一个孩子逐渐认识事物的时候,父母给他一些苹果和橘子(目标值),并且告诉他苹果是什么样的,有哪儿些特征(特征值),橘子是什么样的,有哪儿些特征(特征值)。经过父母的不断介绍,这个孩子已经知道苹果和橘子的区别,如果孩子在看到苹果和橘子的时候给出错误的判断,父母就会指出错误的原因(人工干预),经过不断地学习,再见到苹果和橘子的时候,孩子立即就可以做出正确的判断。

2. 无监督机器学习算法
同样的一个孩子,在一开始认识事物的时候,父母会给他一些苹果和橘子,但是并不告诉他哪儿个是苹果,哪儿个是橘子,而是让他自己根据两个事物的特征自己进行判断,会把苹果和橘子分到两个不同组中,下次再给孩子一个苹果,他会把苹果分到苹果组中,而不是分到橘子组中。

3. 强化机器学习算法
在这里插入图片描述

五、机器学习线性回归

1. 回归分析
根据数据确定两种或两种以上变量间相互依赖的定量关系
在这里插入图片描述
2. 线性回归求解

3. 损失函数
通过损失函数比较最适合的ab
在这里插入图片描述
4. 梯度下降法
上面损失函数可以用来比较两个线性方程,哪个方程的ab更合适,但是梯度下降法可以寻找到损失函数的极小值。

梯度下降法的含义就是:通过一个求导来确定当前pi点的导数值,并且通过0.01来缩放导数值。然后再通过p i 减去缩放后的导数值就可以得到更接近极小值点的p i+1
在这里插入图片描述
这里就不断地使用梯度下降法来找到极小值点
在这里插入图片描述
5. 应用梯度下降法,在损失函数中找到极小值
重复计算是指每个计算出来的tempa和tempb都赋值给a和b,重复这个动作直到计算的tempa和tempb值不怎么变化,就算是收敛了。
在这里插入图片描述

线性回归实战准备

1. sklearn算法库
sklearn算法库使用介绍
从上述损失函数跟梯度下降的运算过程来看,不编写个百来行代码是无法计算出结果的,但是如果使用了sklearn算法库,大概使用五行代码就能实现。
在这里插入图片描述
2. 通过sklearn求解线性回归问题

# 寻找a、b
from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()
lr_model.fit(x,y)

# 展示a、b
a = lr_model.coef_
b = lr_model.intercept_

#对新数据做预测
predictions = lr_model.predict(x_new)

3. 模型评估
对于线性回归方程,主要有以下三种评估方法

均方误差(MSE)
MSE值越小越好,最小可以是0,但无法达到0
在这里插入图片描述
R方值
R方值越大越好,最大可以是1,但无法达到1
在这里插入图片描述
4. 图形展示
注意:左边四个散点图跟右边的多张图同时展示的代码不匹配的,只是对pyplot.subplot函数做介绍
在这里插入图片描述

单因子线性回归实战

任务:基于generated_data.csv数据,建立线性回归模型,预测x=3.5对应的y值。

# 将csv文件导入
import pandas
data = pandas.read_csv('C:/Users/liguojun/Desktop/AI_Data_Set/generated_data.csv')

# 测试数据是否导入
x = data.loc[:,'x']
y = data.loc[:,'y']
from matplotlib import pyplot
pyplot.figure(figsize=(10,10))
pyplot.scatter(x,y)

# 将x、y维度转换,因为后面的fit需要x和y是二维数组
import numpy
x=numpy.array(x)
x=x.reshape(-1,1)
y=numpy.array(y)
y=y.reshape(-1,1)

# 导入sklearn工具包,并且使用线性回归
from sklearn.linear_model import LinearRegression
# 创建模型并返回实例
lr_model = LinearRegression()
# 训练数据集,但是这里需要x和y是二维数组
lr_model.fit(x,y)

# 拟合完后看看效果
y_3 = lr_model.predict([[3.5]])
print(y_3)

# 查看线性回归得到的a和b
a = lr_model.coef_
b = lr_model.intercept_
print(a,b)

# 模型评估
from sklearn.metrics import mean_squared_error, r2_score
y_predict = lr_model.predict(x)
MSE = mean_squared_error(y,y_predict)
R2 = r2_score(y,y_predict)
print(MSE, R2)

运行结果
在这里插入图片描述

多因子线性回归实战

1. 对数据进行可视化

# 导入数据
import pandas as pd
import numpy as np
data = pd.read_csv('C:/Users/liguojun/Desktop/AI_Data_Set/usa_housing_price.csv')

# 导入可视化工具包
%matplotlib inline
from matplotlib import pyplot as plt
# 定制一个10*10英寸的二维坐标系
fig = plt.figure(figsize=(10,10))
# 定制两行三列,并把fig1放在第一个位置
# 绘制散点图,Avg. Area Income做x轴,Price做y轴,并且设置标题
fig1 = plt.subplot(231)
plt.scatter(data.loc[:,'Avg. Area Income'], data.loc[:,'Price'])
plt.title('Price VS Income')

fig2 = plt.subplot(232)
plt.scatter(data.loc[:,'Avg. Area House Age'], data.loc[:,'Price'])
plt.title('Price VS House Age')

fig3 = plt.subplot(233)
plt.scatter(data.loc[:,'Avg. Area Number of Rooms'], data.loc[:,'Price'])
plt.title('Price VS Number of Rooms')

fig4 = plt.subplot(234)
plt.scatter(data.loc[:,'Area Population'], data.loc[:,'Price'])
plt.title('Price VS Area Population')

fig5 = plt.subplot(235)
plt.scatter(data.loc[:,'size'], data.loc[:,'Price'])
plt.title('Price VS size')

在这里插入图片描述
2. 训练模型、预测数据、模型评估

# 建立多变量,X_multi是包含除Price列之外的所有列
X_multi = data.drop(['Price'],axis = 1)
y = y = data.loc[:,'Price']
# 导入sklearn工具包,并且使用线性回归
from sklearn.linear_model import LinearRegression
# 获取线性回归模型
LR_multi = LinearRegression()
# 使用多变量来训练模型
LR_multi.fit(X_multi,y)
# 预测
y_predict_multi = LR_multi.predict(X_multi)
print(y_predict_multi)

# 模型评估
from sklearn.metrics import mean_squared_error, r2_score
MSE = mean_squared_error(y,y_predict_multi)
R2 = r2_score(y,y_predict_multi)
print(MSE, R2)

在这里插入图片描述
3. 预测房屋售价
预测Income=65000,House Age=5,Number of Rooms=5, Population=30000,size=200的合理房价

X_test = [65000,5,5,30000,200]
X_test = np.array(X_test).reshape(1,-1)
y_test_predict = LR_multi.predict(X_test)
print(y_test_predict)

在这里插入图片描述

六、机器学习逻辑回归

使用线性回归解决分类任务

1. 分类任务
小明如果余额为正,那么就会分类到看电影。
小明如果余额为负,那么就会分类到不看电影。
在这里插入图片描述
2. 使用线性回归解决

首先对离散的节点拟合出函数(1),然后再通过函数(2)来分类
在这里插入图片描述

将数据集放入模型中训练,然后将新的数据放入进行预测。
在这里插入图片描述
3. 线性回归出现的问题
在这里插入图片描述

使用逻辑回归解决分类任务

重点就是找到这个g(x)函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
损失函数判断拟合效果
在这里插入图片描述
梯度下降法寻找最小损失函数
在这里插入图片描述
评估模型
在这里插入图片描述

逻辑回归实战:考试通过预测

任务:基于examdata.csv数据,建立逻辑回归模型,预测Exam1=75,Exam2=60时,该同学在Exam3是passed还是failed;
1. 导入数据

# 导入数据
import pandas as pd
import numpy as np
data = pd.read_csv('C:/Users/liguojun/Desktop/AI_Data_Set/examdata.csv')

# 查看数据
%matplotlib inline
from matplotlib import pyplot as plt
fig1 = plt.figure()
plt.scatter(data.loc[:,'Exam1'],data.loc[:,'Exam2'])
plt.xlabel('Exam1')
plt.ylabel('Exam2')
plt.title('Exam1 VS Exam2')

在这里插入图片描述
2. 只输出Pass等于1的数据

# 如果Pass列中值为1,那么这一行就设置为true
mask = data.loc[:,'Pass'] == 1

# mask为true的那一行数据才会被显示出来
fig2 = plt.figure()
plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,'Exam2'][mask])
plt.xlabel('Exam1')
plt.ylabel('Exam2')
plt.title('Exam1 VS Exam2')

在这里插入图片描述
3. 将Pass不同值的点分开

# mask=true和mask=false两种数据分类
fig3 = plt.figure()
# 会自动分颜色
passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,'Exam2'][mask])
failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,'Exam2'][~mask])
plt.xlabel('Exam1')
plt.ylabel('Exam2')
plt.title('Exam1 VS Exam2')

在这里插入图片描述
4. 训练模型

# 定义训练模型的数据集
x = data.drop(['Pass'],axis=1)
y = data.loc[:,'Pass']
x1 = data.loc[:,'Exam1']
x2 = data.loc[:,'Exam2']

# 训练模型
from sklearn.linear_model import LogisticRegression
LR = LogisticRegression()
LR.fit(x,y)

# 预测结果
y_predict = LR.predict(x)
print(y_predict)

在这里插入图片描述
5. 评估模型

from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)

在这里插入图片描述
6. 预测数据

# 预测exam1=70,exam2=65
y_test = LR.predict([[70,65]])
print(y_test)

在这里插入图片描述
7. 获取系数

# 获取系数
theta0 = LR.intercept_
theta1, theta2 = LR.coef_[0][0],LR.coef_[0][1]
print(theta0,theta1,theta2)

在这里插入图片描述

七、机器学习聚类分析

常用聚类算法

1. KMeans聚类
在这里插入图片描述

2. KNN最近邻分类模型
给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居)
在这里插入图片描述

3. Meanshift均值漂移聚类
在这里插入图片描述

4. DBSCAN基于密度的空间聚类算法
在这里插入图片描述


预测结果矫正

因为聚类是无监督学习,所以label0、label1、label2这个标签并不是固定在一堆数据中,所以在散点图与中心点的label需要矫正
在这里插入图片描述

KMeans算法实战

任务:采用Kmeans算法实现2D数据自动聚类,预测V1=80,V2=60数据类别,计算预测准确率,完成结果矫正
1. 导入并查看数据集

import pandas as pd
import numpy as np
data = pd.read_csv('C:/Users/liguojun/Desktop/AI_Data_Set/data.csv')
data.head()

在这里插入图片描述
2. 根据labels分类

# 定义训练数据
x = data.drop(['labels'], axis=1)
y = data.loc[:,'labels']
x.head()
pd.value_counts(y)

在这里插入图片描述
3. 观察散点图

# 画出散点图
%matplotlib inline
from matplotlib import pyplot as plt
fig1 = plt.figure()
plt.scatter(x.loc[:,'V1'],x.loc[:,'V2'])
plt.title("un-labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.show()

在这里插入图片描述
4. 分类显示散点图

fig1 = plt.figure()
label0 = plt.scatter(x.loc[:,'V1'][y==0],x.loc[:,'V2'][y==0])
label1 = plt.scatter(x.loc[:,'V1'][y==1],x.loc[:,'V2'][y==1])
label2 = plt.scatter(x.loc[:,'V1'][y==2],x.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.show()

在这里插入图片描述
5. 训练模型

# 获取聚类模型
from sklearn.cluster import KMeans
# K为3
KM = KMeans(n_clusters=3, random_state=0)
# 训练模型
KM.fit(x)

6. 获取中心点

# 展示聚类模型训练之后的三个中心点
centers = KM.cluster_centers_

在这里插入图片描述

7. 将散点图跟中心点放在一起看看效果

# 将三个中心点放入数据中展示
fig3 = plt.figure()
label0 = plt.scatter(x.loc[:,'V1'][y==0],x.loc[:,'V2'][y==0])
label1 = plt.scatter(x.loc[:,'V1'][y==1],x.loc[:,'V2'][y==1])
label2 = plt.scatter(x.loc[:,'V1'][y==2],x.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.legend((label0,label1,label2),('label0','label1','label2'))

plt.scatter(centers[:,0],centers[:,1])
plt.show()

在这里插入图片描述
8. 查看预测数据
发现预测数据的结果跟实际值不一样

# 测试预测数据
y_predict_test = KM.predict([[80,60]])
print(y_predict_test)

在这里插入图片描述
9. 查看准确率

# 获取准确率
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)

在这里插入图片描述
10. 查看哪里出现差错

fig5 = plt.subplot(121)
label0 = plt.scatter(x.loc[:,'V1'][y==0],x.loc[:,'V2'][y==0])
label1 = plt.scatter(x.loc[:,'V1'][y==1],x.loc[:,'V2'][y==1])
label2 = plt.scatter(x.loc[:,'V1'][y==2],x.loc[:,'V2'][y==2])
plt.title("predicted data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.scatter(centers[:,0],centers[:,1])

fig6 = plt.subplot(122)
label0 = plt.scatter(x.loc[:,'V1'][y==0],x.loc[:,'V2'][y==0])
label1 = plt.scatter(x.loc[:,'V1'][y==1],x.loc[:,'V2'][y==1])
label2 = plt.scatter(x.loc[:,'V1'][y==2],x.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.scatter(centers[:,0],centers[:,1])

发现label错乱了
在这里插入图片描述


11. 预测结果纠正

# 预测结果矫正
y_corrected =[]
for i in y_predict:
    if i==0:
        y_corrected.append(1)
    elif i==1:
        y_corrected.append(2)
    else:
        y_corrected.append(0)
print(pd.value_counts(y_corrected),pd.value_counts(y))

在这里插入图片描述
12. 重新计算准确率

# 重新计算准确率
print(accuracy_score(y,y_corrected))

在这里插入图片描述

KNN算法实战

1. 获取KNN算法模型并训练模型
在这里插入图片描述
==2.查看效果 ==
因为KNN算法是监督式算法,所以label不会混乱
在这里插入图片描述
在这里插入图片描述
3. 预测结果并计算准确率
在这里插入图片描述

Meanshift算法实战

1. 确定样本数量以及估算半径
对x数据集的样本数量为500,估算半径为30.84663454820215
在这里插入图片描述
2. 创建Meanshift模型
在这里插入图片描述
3. 预测数据
发现label又出现了混乱
在这里插入图片描述
4. 查看散点图

fig5 = plt.subplot(121)
label0 = plt.scatter(x.loc[:,'V1'][y==0],x.loc[:,'V2'][y==0])
label1 = plt.scatter(x.loc[:,'V1'][y==1],x.loc[:,'V2'][y==1])
label2 = plt.scatter(x.loc[:,'V1'][y==2],x.loc[:,'V2'][y==2])
plt.title("predicted data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.scatter(centers[:,0],centers[:,1])

fig6 = plt.subplot(122)
label0 = plt.scatter(x.loc[:,'V1'][y==0],x.loc[:,'V2'][y==0])
label1 = plt.scatter(x.loc[:,'V1'][y==1],x.loc[:,'V2'][y==1])
label2 = plt.scatter(x.loc[:,'V1'][y==2],x.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.scatter(centers[:,0],centers[:,1])

在这里插入图片描述
5. 根据上述散点图进行纠正
在这里插入图片描述
6. 根据纠正后的结果查看散点图
在这里插入图片描述
在这里插入图片描述

八、机器学习决策树

决策树介绍

目标:划分后样本分布不确定性尽可能小,即划分后信息熵小,信息增益大
总结:哪个属性分类后信息更集中就先选择哪个属性进行分类
算法:ID3、C4.5、CART
在这里插入图片描述

决策树实战准备

entropy:信息熵
samples:样本数量
value:根据class分类后每个种类的不同值
class:种类
在这里插入图片描述

九、机器学习异常检测

异常检测介绍

基于高斯分布实现异常检测
在这里插入图片描述

异常数据检测实战准备

在这里插入图片描述
在这里插入图片描述

十、机器学习主成分分析PCA

主成分分析介绍

主成分分析用于实现数据降维,数据降维可以减少模型分析数据量,提升处理效率,降低计算难度,实现数据可视化(因为高纬度无法进行数据可视化)
在这里插入图片描述

主成分分析实战准备

在这里插入图片描述
在这里插入图片描述

十一、深度学习之多层感知机MLP

多层感知机MLP介绍

在这里插入图片描述

多层感知机MLP实现单一非线性分类

1. AND运算
在这里插入图片描述
2. 同或运算
在这里插入图片描述

多层感知机MLP实现多分类预测

在这里插入图片描述
多层感知机MLP实战准备
在这里插入图片描述

十二、总结

在学习了部分章节之后,我觉得本门课程后面的学习都是讲知识点,然后做实战准备,最后实战。所以我认为有了前面的几个算法演练之后,后面的就可以省略,思路大致掌握就可以了,后面遇到新的算法再去学习就行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在小公司工作3年,从事软件测试5年了,才发现自己还是处于“初级“水平,是不是该放弃....

毕业前三年,从早到晚,加班到深夜,一年又一年,直至刚入职场的首个黄金三年过年都去了,而职位却仍在原地踏步。尽管感觉自己努力过,但是实际上,自身的能力从没得到过多少提升。 所以在无数个夜晚…

生成对抗网络 | Python实现StackGAN生成对抗神经网络

生成对抗网络 | Python实现StackGAN生成对抗神经网络 目录 生成对抗网络 | Python实现StackGAN生成对抗神经网络效果一览文章概述环境准备程序设计参考资料效果一览 文章概述 生成对抗网络 | Python实现StackGAN生成对抗神经网络 环境准备 python 2.7 TensorFlow 0.12 prettyte…

Java 多线程

多线程实现方式Thread类MyThread类继承了Thread类MyThread thread new MyThread1("窗口1");thread.start();Runnable接口自定义一个MyRunnable类来实现Runnable接口,在MyRunnable类中重写run()方法,创建Thread对象&…

I.MX6ULL_Linux_驱动篇(32) 设备树GPIO驱动

在前面章节中,我们直接在驱动文件 newchrled.c 中定义有关寄存器物理地址,然后使用 io_remap 函数进行内存映射,得到对应的虚拟地址,最后操作寄存 器对应的虚拟地址完成对 GPIO 的初始化。本章我们使用设备树来向 Linux 内核传递相…

劝退还是坚守?计算机视觉行业综述

劝退还是坚守?计算机视觉行业综述 1 从炙手可热到充满争议 计算机视觉(Computer Vision,简写为CV)是一门研究如何让计算机从图像或图像序列中获取信息并 理解其信息的学科,其主要目的在于从图像或图像序列中提取对世…

基于51单片机AT89C51的小型音乐喷泉控制系统设计

wx供重浩:创享日记 对话框发送:单片机小喷泉 获取完整无水印论文报告(内含电路原理图和程序) 根据目前音乐喷泉的发展现状,介绍了一个以AT89C51单片机为核心的小型音乐喷泉控制系统。给出了一个简洁的单片机控制电路&a…

Java_Spring:9. 基于 XML 的 AOP 配置

目录 1 环境搭建 1.1 第一步:准备必要的代码 1.2 第二步:拷贝必备的 jar 包到工程的 lib 目录 1.3 第三步:创建 spring 的配置文件并导入约束 1.4 第四步:配置 spring 的 ioc 1.5 第五步:抽取公共代码制作成通知 …

数据结构与算法笔记--数据结构与算法基本知识

目录 1--数据结构 2--算法 3--算法分析 4--实例1:普通算法与秦九韶算法的运算效率比较 5--实例2:最大子列和问题 5-1--暴力求解法 5-2--分而治之 5-3--动态规划 5-4--完整代码 1--数据结构 定义:所有数据元素以及数据元素之间的关系…

JS手写Promise(详细过程)

PS:JS手写Promise方法的整理在下一篇文章 手写Promise的API(resolve,reject,then,catch,finally,all)_Eric加油学!的博客-CSDN博客 1、基础版Promise 首先,通过一个简单的Promise例子回顾其使用 const promise new Promise((resolve, rej…

为什么诚信是项目管理的关键部分?

由于有许多需要指导的活动部件和风险,管理一个新项目可能是一项具有挑战性的工作。在一些对质量有着严格要求的行业,项目结构、设定目标、跟踪状态、风险管理和资源管理等项目管理原则尤为重要,而领导这项工作的是诚信。那么,究竟…

IP 归属用 Ip2region 就够了

文章目录Ip2region 简介是什么特性支持的编程语言案例实操依赖获取IP输入流转化解析IP测试抖音、微博、小红书等各平台相继上线" 网络用户IP地址显示功能", 境外显示 国家, 境内显示到 省市,且该功能无法关闭,IP地址为强…

【新2023Q2模拟题JAVA】华为OD机试 - 分苹果

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:分苹果 题目 AB两个人把苹果…

第16章_变量、流程控制与游标

第16章_变量、流程控制与游标 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生&#xf…

ClickHouse学习笔记(三):MergeTree 原理解析

文章目录1、简介2、MergeTree 创建方式与存储结构2.1、MergeTree 的创建方式2.2、MergeTree 的存储结构3、MergeTree 数据分区3.1、分区目录的命名规则3.2、分区目录合并过程4、一级索引4.1、索引粒度4.2、索引生成4.3、索引查询5、二级索引6、数据存储7、数据标记8、协同总结8…

BootStrap4:栅格系统

1、container容器 container:固定宽度的容器container-fluid:响应式容器 2、栅格选项 Bootstrap4 总共有五个栅格等级,每个响应式分界点隔出一个等级 Ps:.row上带有margin-left: -15px;margin-right: -15px;属性,你…

【22年蓝桥杯】十三届蓝桥杯真题JavaB组解析+代码(带你复习知识点)(一)

试题 A: 星期计算 【填空题】 答案:7 解析:直接对所给数进行取余,然后直接再加6(注意:不能直接让20^226再对7进行取余操作,这是不对的,这个6可以看成已经取余过了。) 直接取余的话可…

Linux系统安装部署及配置Grafana

TOC 用于 UI 展示 wget https://dl.grafana.com/oss/release/grafana-8.0.3-1.x86_64.rpm1 安装 grafana 1.1 下载安装 wget https://dl.grafana.com/oss/release/grafana-8.0.3-1.x86_64.rpmsudo yum install grafana-8.0.3-1.x86_64.rpm1.2 启动&状态查看 sudo syst…

PHP初级教程------------------(3)

目录 文件包含 文件包含的作用 文件包含四种形式 文件加载原理 Include和require区别 文件加载路径 文件嵌套包含 函数 函数的基本概念 函数定义语法 函数命名规范 参数详解 形参 实参 默认值 引用传递 函数体 函数返回值 ​作用域 静态变量 可变函数 匿名函数 闭包 伪类型 文件…

作为一个数学专业的学生,我是怎么看待编程的?

1.概况 博主的专业是数学与应用数学,简称应数。虽然后面跟了个应用数学,但是这个专业应该是本科阶段最接近数学的专业了。我认为这个专业使我具有如下的几个优势: 数学的学习使我具有较强的思维能力。编程本质上就是通过写代码的方式来解决…

大数据Flink进阶(八):Apache Flink架构介绍

Apache Flink架构介绍 一、Flink组件栈 在Flink的整个软件架构体系中,同样遵循这分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富且友好的接口。