数据预处理(超详细)

news2024/9/20 1:06:07
import pandas as pd
import numpy as np

【例5-1】使用read_csv函数读取CSV文件。

df1 = pd.read_csv("sunspots.csv")
 #读取CSV文件到DataFrame中
print(df1.sample(5))

df2 = pd.read_table("sunspots.csv",sep = ",")
 #使用read_table,并指定分隔符
print("------------------")
print(df2.sample(5))
df3 = pd.read_csv("sunspots.csv",names = ["a","b"])
 #文件不包含表头行,允许自动分配默认列名,也可以指定列名
print("------------------")
print(df3.sample(5))
     year  counts
1    1701    11.0
262  1962    37.5
35   1735    34.0
66   1766    11.4
72   1772    66.5
------------------
     year  counts
216  1916    57.1
43   1743    16.0
196  1896    41.8
7    1707    20.0
212  1912     3.6
------------------
        a       b
269  1968   105.9
60   1759      54
33   1732      11
0    year  counts
75   1774    30.6

【例5-2】读取excel文件。

xlsx = "data_test.xlsx"
df1 = pd.read_excel(xlsx,"Sheet1")
print(df1)
#也可以直接利用: 
df2 =  pd.read_excel("data_test.xlsx","Sheet1")
print("-------------------------------")
print(df2)
   00101  长裤  黑色   89
0   1123  上衣  红色  129
1   1010  鞋子  蓝色  150
2    100  内衣  灰色  100
-------------------------------
   00101  长裤  黑色   89
0   1123  上衣  红色  129
1   1010  鞋子  蓝色  150
2    100  内衣  灰色  100

【例5-3】merge的默认合并数据。

price = pd.DataFrame({'fruit':['apple','grape','orange','orange'],
'price':[8,7,9,11]})
amount = pd.DataFrame({'fruit':['apple','grape','orange'],'amout':[5,11,8]})
display(price,amount,pd.merge(price,amount))

fruitprice
0apple8
1grape7
2orange9
3orange11
fruitamout
0apple5
1grape11
2orange8
fruitpriceamout
0apple85
1grape711
2orange98
3orange118

【例5-4】指定合并时的列名。

display(pd.merge(price,amount,left_on = 'fruit',right_on = 'fruit'))
fruitpriceamout
0apple85
1grape711
2orange98
3orange118

【例5-5】左连接。

display(pd.merge(price,amount,how = 'left'))
fruitpriceamout
0apple85
1grape711
2orange98
3orange118

【例5-6】右连接。

display(pd.merge(price,amount,how = 'right'))
fruitpriceamout
0apple85
1grape711
2orange98
3orange118

【例5-7】merge通过多个键合并。

left = pd.DataFrame({'key1':['one','one','two'],'key2':['a','b','a'],'value1':range(3)})
right = pd.DataFrame({'key1':['one','one','two','two'],'key2':['a','a','a','b'],'value2':range(4)})
display(left,right,pd.merge(left,right,on = ['key1','key2'],how = 'left'))

key1key2value1
0onea0
1oneb1
2twoa2
key1key2value2
0onea0
1onea1
2twoa2
3twob3
key1key2value1value2
0onea00.0
1onea01.0
2oneb1NaN
3twoa22.0

【例5-8】merge函数中参数suffixes的应用。

print(pd.merge(left,right,on = 'key1'))
print(pd.merge(left,right,on = 'key1',suffixes = ('_left','_right')))

  key1 key2_x  value1 key2_y  value2
0  one      a       0      a       0
1  one      a       0      a       1
2  one      b       1      a       0
3  one      b       1      a       1
4  two      a       2      a       2
5  two      a       2      b       3
  key1 key2_left  value1 key2_right  value2
0  one         a       0          a       0
1  one         a       0          a       1
2  one         b       1          a       0
3  one         b       1          a       1
4  two         a       2          a       2
5  two         a       2          b       3

【例5-9】两个Series的数据连接。

s1 = pd.Series([0,1],index = ['a','b'])
s2 = pd.Series([2,3,4],index = ['a','d','e'])
s3 = pd.Series([5,6],index = ['f','g'])
print(pd.concat([s1,s2,s3]))  #Series行合并

a    0
b    1
a    2
d    3
e    4
f    5
g    6
dtype: int64

【例5-10】两个DataFrame的数据连接。

data1 = pd.DataFrame(np.arange(6).reshape(2,3),columns = list('abc'))
data2 = pd.DataFrame(np.arange(20,26).reshape(2,3),columns = list('ayz'))
data = pd.concat([data1,data2],axis = 0,sort=False)
display(data1,data2,data)
abc
0012
1345
ayz
0202122
1232425
abcyz
001.02.0NaNNaN
134.05.0NaNNaN
020NaNNaN21.022.0
123NaNNaN24.025.0

【例5-11】指定索引顺序。

s1 = pd.Series([0,1],index = ['a','b'])
s2 = pd.Series([2,3,4],index = ['a','d','e'])
s3 = pd.Series([5,6],index = ['f','g'])
s4 = pd.concat([s1*5,s3],sort=False)
s5 = pd.concat([s1,s4],axis = 1,sort=False)
s6 = pd.concat([s1,s4],axis = 1,join = 'inner',sort=False)
s7 = pd.concat([s1,s4],axis = 1,join = 'inner',join_axes = [['b','a']],sort=False)
display(s4,s5,s6,s7)

在这里插入图片描述

a 0
b 5
f 5
g 6
dtype: int64

01
a0.00
b1.05
fNaN5
gNaN6
01
a00
b15
01
b15
a00

【例5-12】使用combine_first合并。

s6.combine_first(s5)
01
a0.00.0
b1.05.0
fNaN5.0
gNaN6.0

【例5-13】利用isnull检测缺失值。

import numpy as np
import pandas as pd
string_data = pd.Series(['aardvark', 'artichoke', np.nan, 'avocado'])
print(string_data)
string_data.isnull()

0 aardvark
1 artichoke
2 NaN
3 avocado
dtype: object

0 False
1 False
2 True
3 False
dtype: bool

【例5-14】None值也会被当做NA处理。

string_data = pd.Series(['aardvark', 'artichoke',None, 'avocado'])
string_data.isnull()

0    False
1    False
2     True
3    False
dtype: bool

【例5-15】利用isnull().sum()统计缺失值。

df = pd.DataFrame(np.arange(12).reshape(3,4),columns = ['A','B','C','D'])
df.iloc[2,:] = np.nan
df[3] = np.nan
print(df)
df.isnull().sum()

     A    B    C    D   3
0  0.0  1.0  2.0  3.0 NaN
1  4.0  5.0  6.0  7.0 NaN
2  NaN  NaN  NaN  NaN NaN





A    1
B    1
C    1
D    1
3    3
dtype: int64

【例5-16】用info方法查看DataFrame的缺失值。

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 5 columns):
A    2 non-null float64
B    2 non-null float64
C    2 non-null float64
D    2 non-null float64
3    0 non-null float64
dtypes: float64(5)
memory usage: 248.0 bytes

【例5-17】Series的dropna用法。

from numpy import nan as NA
data = pd.Series([1, NA, 3.5, NA, 7])
print(data)
print(data.dropna())

0    1.0
1    NaN
2    3.5
3    NaN
4    7.0
dtype: float64
0    1.0
2    3.5
4    7.0
dtype: float64

【例5-18】布尔型索引选择过滤非缺失值。

not_null = data.notnull()
print(not_null)
print(data[not_null])

0 True
1 False
2 True
3 False
4 True
dtype: bool
0 1.0
2 3.5
4 7.0
dtype: float64

【例5-19】DataFrame对象的dropna默认参数使用。

from numpy import nan as NA
data = pd.DataFrame([[1., 5.5, 3.], [1., NA, NA],[NA, NA, NA], 
[NA, 5.5, 3.]])
print(data)
cleaned = data.dropna()
print('删除缺失值后的:\n',cleaned)

     0    1    2
0  1.0  5.5  3.0
1  1.0  NaN  NaN
2  NaN  NaN  NaN
3  NaN  5.5  3.0
删除缺失值后的:
      0    1    2
0  1.0  5.5  3.0

【例5-20】传入参数all。

data = pd.DataFrame([[1., 5.5, 3.], [1., NA, NA],[NA, NA, NA], 
[NA, 5.5, 3.]])
print(data)
data.dropna(how='all')

     0    1    2
0  1.0  5.5  3.0
1  1.0  NaN  NaN
2  NaN  NaN  NaN
3  NaN  5.5  3.0
012
01.05.53.0
11.0NaNNaN
3NaN5.53.0

【例5-21】dropna中的axis参数应用。

df = pd.DataFrame([[1., 5.5, NA], [1., NA, NA],[NA, NA, NA], [NA, 5.5, NA]])
print(df)
df.dropna(axis = 1, how = 'all')

     0    1   2
0  1.0  5.5 NaN
1  1.0  NaN NaN
2  NaN  NaN NaN
3  NaN  5.5 NaN
01
01.05.5
11.0NaN
2NaNNaN
3NaN5.5

【例5-22】dropna中的thresh参数应用。

df = pd.DataFrame(np.random.randn(7, 3))
df.iloc[:4, 1] = NA
df.iloc[:2, 2] = NA
print(df)
df.dropna(thresh=2)

          0         1         2
0 -0.506363       NaN       NaN
1  0.109888       NaN       NaN
2 -1.102190       NaN  0.399151
3  0.757800       NaN  1.170835
4  0.350187 -0.315094 -2.319175
5  0.056101  0.256769  0.438723
6 -0.128135 -0.141123 -0.945234
012
2-1.102190NaN0.399151
30.757800NaN1.170835
40.350187-0.315094-2.319175
50.0561010.2567690.438723
6-0.128135-0.141123-0.945234

【例5-23】通过字典形式填充缺失值。

df = pd.DataFrame(np.random.randn(5,3))
df.loc[:3,1] = NA
df.loc[:2,2] = NA
print(df)
df.fillna({1:0.88,2:0.66})

          0         1         2
0 -0.889385       NaN       NaN
1  0.672471       NaN       NaN
2  1.515747       NaN       NaN
3  0.000104       NaN  0.212531
4 -1.993694  1.385779 -0.870010
012
0-0.8893850.8800000.660000
10.6724710.8800000.660000
21.5157470.8800000.660000
30.0001040.8800000.212531
4-1.9936941.385779-0.870010

【例5-24】fillna中method的应用。

df = pd.DataFrame(np.random.randn(6, 3))
df.iloc[2:, 1] = NA
df.iloc[4:, 2] = NA
print(df)
df.fillna(method = 'ffill')

          0         1         2
0  0.756464  0.443256 -0.658759
1  0.919615  0.492780  0.993361
2  1.362813       NaN -0.515228
3 -1.114843       NaN -0.622650
4  0.496363       NaN       NaN
5  0.647327       NaN       NaN
012
00.7564640.443256-0.658759
10.9196150.4927800.993361
21.3628130.492780-0.515228
3-1.1148430.492780-0.622650
40.4963630.492780-0.622650
50.6473270.492780-0.622650

【例5-25】用Series的均值填充。

series= pd.Series([1., NA, 3.5, NA, 7])
series.fillna(data.mean())

0    1.0
1    5.5
2    3.5
3    NaN
4    7.0
dtype: float64

【例5-26】DataFrame中用均值填充。

df = pd.DataFrame(np.random.randn(4, 3))
df.iloc[2:, 1] = NA
df.iloc[3:, 2] = NA
print(df)
df[1] = df[1].fillna(df[1].mean())
print(df)

          0         1         2
0  0.209804 -0.308095  1.773856
1 -1.021306  2.082047 -0.396020
2  0.835592       NaN -1.363282
3 -1.253210       NaN       NaN
          0         1         2
0  0.209804 -0.308095  1.773856
1 -1.021306  2.082047 -0.396020
2  0.835592  0.886976 -1.363282
3 -1.253210  0.886976       NaN

【例5-27】判断DataFrame中的重复数据。

data = pd.DataFrame({ 'k1':['one','two'] * 3 + ['two'],'k2':[1, 1, 2, 3, 1, 4, 4] ,'k3':[1,1,5,2,1, 4, 4] })
print(data)
data.duplicated()

    k1  k2  k3
0  one   1   1
1  two   1   1
2  one   2   5
3  two   3   2
4  one   1   1
5  two   4   4
6  two   4   4




0    False
1    False
2    False
3    False
4     True
5    False
6     True
dtype: bool

【例5-28】每行各个字段都相同时去重。

data.drop_duplicates()
k1k2k3
0one11
1two11
2one25
3two32
5two44

【例5-29】指定部分列重复时去重。

data.drop_duplicates(['k2','k3'])
k1k2k3
0one11
2one25
3two32
5two44

【例5-30】去重时保留最后出现的记录。

data.drop_duplicates(['k2','k3'],keep = 'last')
k1k2k3
2one25
3two32
4one11
6two44

【例5-31】利用散点图检测异常值。

import matplotlib.pyplot as plot
wdf = pd.DataFrame(np.arange(20),columns = ['W'])
wdf['Y'] = wdf['W']*1.5+2
wdf.iloc[3,1] = 128
wdf.iloc[18,1] = 150
wdf.plot(kind = 'scatter',x = 'W',y = 'Y')

<matplotlib.axes._subplots.AxesSubplot at 0x27b3d064388>

【例5-32】利用箱线图分析异常值。

import matplotlib.pyplot as plt
plt.boxplot(wdf['Y'].values,notch = True)


{'whiskers': [<matplotlib.lines.Line2D at 0x27b3d504f08>,
  <matplotlib.lines.Line2D at 0x27b3d50cac8>],
 'caps': [<matplotlib.lines.Line2D at 0x27b3d50cbc8>,
  <matplotlib.lines.Line2D at 0x27b3d510bc8>],
 'boxes': [<matplotlib.lines.Line2D at 0x27b3bd583c8>],
 'medians': [<matplotlib.lines.Line2D at 0x27b3d510cc8>],
 'fliers': [<matplotlib.lines.Line2D at 0x27b3d516cc8>],
 'means': []}

【例5-33】利用3σ法则检测异常值。

def outRange(S):
    blidx = (S.mean()-3*S.std()>S)|(S.mean()+3*S.std()<S)
    idx = np.arange(S.shape[0])[blidx]
    outRange = S.iloc[idx]
    return outRange
outier = outRange(wdf['Y'])
outier

18    150.0
Name: Y, dtype: float64

【例5-34】replace替换数据值。

data = {'姓名':['李红','小明','马芳','国志'],'性别':['0','1','0','1'],
'籍贯':['北京','甘肃','','上海']}
df = pd.DataFrame(data)
df = df.replace('','不详')
print(df)

姓名 性别 籍贯
0 李红 0 北京
1 小明 1 甘肃
2 马芳 0 不详
3 国志 1 上海

【例5-35】replace传入列表实现多值替换。

df = df.replace(['不详','甘肃'],['兰州','兰州'])
print(df)

   姓名 性别  籍贯
0  李红  0  北京
1  小明  1  兰州
2  马芳  0  兰州
3  国志  1  上海

【例5-36】 replace传入字典实现多值替换

df = df.replace({'1':'男','0':'女'})
print(df)

   姓名 性别  籍贯
0  李红  女  北京
1  小明  男  兰州
2  马芳  女  兰州
3  国志  男  上海

【例5-37】map方法映射数据。

data = {'姓名':['李红','小明','马芳','国志'],'性别':['0','1','0','1'],
'籍贯':['北京','兰州','兰州','上海']}
df = pd.DataFrame(data)
df['成绩'] = [58,86,91,78]
print(df)
def grade(x):
    if x>=90:
        return '优'
    elif 70<=x<90:
        return '良'
    elif 60<=x<70:
        return '中'
    else:
        return '差'
df['等级'] = df['成绩'].map(grade)
print("-----------------------------------")
print(df)

   姓名 性别  籍贯  成绩
0  李红  0  北京  58
1  小明  1  兰州  86
2  马芳  0  兰州  91
3  国志  1  上海  78
-----------------------------------
   姓名 性别  籍贯  成绩 等级
0  李红  0  北京  58  差
1  小明  1  兰州  86  良
2  马芳  0  兰州  91  优
3  国志  1  上海  78  良

【例5-38】数据的离差标准化。

def MinMaxScale(data):
    data = (data-data.min())/(data.max()-data.min())
    return data
x = np.array([[ 1., -1.,  2.],[ 2.,  0.,  0.],[ 0.,  1., -1.]])
print('原始数据为:\n',x)
x_scaled = MinMaxScale(x)
print('标准化后矩阵为:\n',x_scaled,end = '\n')

原始数据为:
 [[ 1. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -1.]]
标准化后矩阵为:
 [[0.66666667 0.         1.        ]
 [1.         0.33333333 0.33333333]
 [0.33333333 0.66666667 0.        ]]

【例5-39】数据的标准差标准化。

def StandardScale(data):
    data = (data-data.mean())/data.std()
    return data
x = np.array([[ 1., -1.,  2.],[ 2.,  0.,  0.],[ 0.,  1., -1.]])
print('原始数据为:\n',x)
x_scaled = StandardScale(x)
print('标准化后矩阵为:\n',x_scaled,end = '\n')

原始数据为:
 [[ 1. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -1.]]
标准化后矩阵为:
 [[ 0.52128604 -1.35534369  1.4596009 ]
 [ 1.4596009  -0.41702883 -0.41702883]
 [-0.41702883  0.52128604 -1.35534369]]

【例5-40】数据的哑变量处理。

df = pd.DataFrame([  
            ['green', 'M', 10.1, 'class1'],   
            ['red', 'L', 13.5, 'class2'],   
            ['blue', 'XL', 15.3, 'class1']])  
df.columns = ['color', 'size', 'prize','class label']  
print(df)
pd.get_dummies(df) 

   color size  prize class label
0  green    M   10.1      class1
1    red    L   13.5      class2
2   blue   XL   15.3      class1
prizecolor_bluecolor_greencolor_redsize_Lsize_Msize_XLclass label_class1class label_class2
010.101001010
113.500110001
215.310000110

【例5-41】cut方法应用。

np.random.seed(666)
score_list = np.random.randint(25, 100, size = 10)
print('原始数据:\n',score_list)
bins = [0, 59, 70, 80, 100]
score_cut = pd.cut(score_list, bins)
print(pd.value_counts(score_cut)) 
# 统计每个区间人数

原始数据:
 [27 70 55 87 95 98 55 61 86 76]
(80, 100]    4
(0, 59]      3
(59, 70]     2
(70, 80]     1
dtype: int64

例5-42 泰坦尼克数据集中的年龄字段进行分组转换为分类特征
如(<=12,儿童)、(<=18,青少年)、(<=60,成人)、(>60,老人)

import seaborn as sns
import sys
# 导入泰坦尼克数据集
df = sns.load_dataset('titanic')
display(df.head())
df['ageGroup']=pd.cut(
                    df['age'], 
                    bins=[0, 13, 19, 61, sys.maxsize], 
                    labels=['儿童', '青少年', '成人', '老人']
                      )
# sys.maxsize是指可以存储的最大值

display(df.head())
survivedpclasssexagesibspparchfareembarkedclasswhoadult_maledeckembark_townalivealone
003male22.0107.2500SThirdmanTrueNaNSouthamptonnoFalse
111female38.01071.2833CFirstwomanFalseCCherbourgyesFalse
213female26.0007.9250SThirdwomanFalseNaNSouthamptonyesTrue
311female35.01053.1000SFirstwomanFalseCSouthamptonyesFalse
403male35.0008.0500SThirdmanTrueNaNSouthamptonnoTrue
survivedpclasssexagesibspparchfareembarkedclasswhoadult_maledeckembark_townalivealoneageGroup
003male22.0107.2500SThirdmanTrueNaNSouthamptonnoFalse成人
111female38.01071.2833CFirstwomanFalseCCherbourgyesFalse成人
213female26.0007.9250SThirdwomanFalseNaNSouthamptonyesTrue成人
311female35.01053.1000SFirstwomanFalseCSouthamptonyesFalse成人
403male35.0008.0500SThirdmanTrueNaNSouthamptonnoTrue成人

【例5-43】等频法离散化连续型数据。

def SameRateCut(data,k):
    k = 2
    w = data.quantile(np.arange(0,1+1.0/k,1.0/k))
    data = pd.cut(data,w)
    return data
result = SameRateCut(pd.Series(score_list),3)
result.value_counts()

(73.0, 98.0]    5
(27.0, 73.0]    4
dtype: int64

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能基础_机器学习003_有监督机器学习_sklearn中线性方程和正规方程的计算_使用sklearn解算八元一次方程---人工智能工作笔记0042

然后我们再来看看,如何使用sklearn,来进行正规方程的运算,当然这里 首先要安装sklearn,这里如何安装sklearn就不说了,自己查一下 首先我们还是来计算前面的八元一次方程的解,但是这次我们不用np.linalg.solve这个 解线性方程的方式,也不用 直接 解正规方程的方式: 也就是上面…

接口自动化测试实践

接口自动化概述 Python接口自动化测试零基础入门到精通&#xff08;2023最新版&#xff09; 众所周知&#xff0c;接口自动化测试有着如下特点&#xff1a; 低投入&#xff0c;高产出。 比较容易实现自动化。 和UI自动化测试相比更加稳定。 如何做好一个接口自动化测试项目呢…

华媒舍:怎样利用KOL出文营销推广打造出超级影响力?

利用KOL&#xff08;Key Opinion Leader&#xff09;出文营销推广已成为很多个人和企业提高影响力的重要方法。根据恰当的思路与技巧&#xff0c;你也能轻松吸引大批粉丝并打造无敌的存在影响力。下面我们就以科谱的形式详细介绍怎样利用KOL 出文营销推广&#xff0c;帮助自己做…

SD-WAN让跨境网络访问更快、更安全!

目前许多外贸企业都面临着跨境网络不稳定、不安全的问题&#xff0c;给业务合作带来了很多困扰。但是&#xff0c;现在有一个解决方案能够帮助您解决这些问题&#xff0c;让您的跨境网络访问更快、更安全&#xff0c;那就是SD-WAN&#xff01; 首先&#xff0c;让我们来看看SD-…

微机原理:逻辑运算指令、移位指令

文章目录 一、逻辑运算指令1、取反运算指令2、与运算指令3、或运算指令4、异或运算 二、移位指令1、开环移位指令算术左移&#xff1a;SHL、SAL算术右移&#xff1a;SAR逻辑右移&#xff1a;SHR 2、闭环移位指令含进位的循环左移&#xff1a;RCL含进位的循环右移&#xff1a;RC…

lunar-1.5.jar

公历农历转换包 https://mvnrepository.com/artifact/com.github.heqiao2010/lunar <!-- https://mvnrepository.com/artifact/com.github.heqiao2010/lunar --> <dependency> <groupId>com.github.heqiao2010</groupId> <artifactId>l…

使用文件附件

文件附件在peoplesoft中非常常见 This chapter provides an overview of the file attachment functions and discusses: Developing applications that use file attachment functions. Application development considerations. Application deployment and system configu…

基于 Appium 的 Android UI 自动化测试!

自动化测试是研发人员进行质量保障的重要一环&#xff0c;良好的自动化测试机制能够让开发者及早发现编码中的逻辑缺陷&#xff0c;将风险前置。日常研发中&#xff0c;由于快速迭代的原因&#xff0c;我们经常需要在各个业务线上进行主流程回归测试&#xff0c;目前这种测试大…

Kafka入门04——原理分析

目录 01理解Topic和Partition Topic(主题) Partition(分区) 02理解消息分发 消息发送到分区 消费者订阅和消费指定分区 总结 03再均衡(rebalance) 再均衡的触发 分区分配策略 RangeAssignor(范围分区) RoundRobinAssignor(轮询分区) StickyAssignor(粘性分区) Re…

软件测试面试1000问(含文档)

前前后后面试了有20多家的公司吧&#xff0c;最近抽空把当时的录音整理了下&#xff0c;然后给大家分享下 开头都是差不多&#xff0c;就让做一个自我介绍&#xff0c;这个不用再给大家普及了吧 同时&#xff0c;我也准备了一份软件测试视频教程&#xff08;含接口、自动化、…

进阶课4——随机森林

1.定义 随机森林是一种集成学习方法&#xff0c;它利用多棵树对样本进行训练并预测。 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器&#xff0c;每棵树都由随机选择的一部分特征进行训练和构建。通过多棵树的集成&#xff0c;可以增加模型的多样性和泛化能力。…

MTK AEE_EXP调试方法及user版本打开方案

一、AEE介绍 AEE (Android Exception Engine)是安卓的一个异常捕获和调试信息生成机制。 手机发生错误(异常重启/卡死)时生成db文件(一种被加密过的二进制文件)用来保存和记录异常发生时候的全部内存信息,经过调试和仿真这些信息,能够追踪到异常的缘由。 二、调试方法…

深度学习_6_实战_点集最优直线解_代码解析

问题描述&#xff1a; 上述题目的意思为&#xff0c;人工造出一些数据点&#xff0c;对我们的模型y Xw b ∈进行训练&#xff0c;其中标准模型如下&#xff1a; 其中W和X都为张量&#xff0c;我们训练的模型越接近题目给出的标准模型越好 训练过程如下&#xff1a; 人造数…

订水商城H5实战教程-04用户注册

目录 1 用户注册2 创建模型应用3 开发审核功能4 配置菜单5 发布预览最终效果 我们上一篇讲解了用户协议的功能&#xff0c;如果用户同意协议&#xff0c;就可以跳转到注册页面&#xff0c;要求用户录入个人基本信息&#xff0c;本篇我们介绍一下用户注册功能。 1 用户注册 用户…

Python-自动化绘制股票价格通道线

常规方案 通过将高点/低点与其 2 个或 3 个相邻点进行比较来检测枢轴点,并检查它是否是其中的最高/最低点。对所有枢轴点进行线性回归以获得上方和下方趋势线。价格离开通道后建仓。通过这样做,我们得到如下所示的价格通道。我认为我们可以利用给定的数据取得更好的结果。

OkHttp网络框架深入理解-SSL握手与加密

OkHttp简介 由Square公司贡献的一个处理网络请求的开源项目&#xff0c;是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。 特点&#xff1a; 支持HTTP/2并允许对同一主机的所有请求共享一个套接字通过连接池,减少了请求延迟…

基于XML的Web服务Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 实现

简介 JAX-WS&#xff08;Java API for XML-Based Web Services&#xff09;&#xff0c;是创建web服务的Java编程接口&#xff0c;特别是SOAP服务。是Java XML编程接口之一&#xff0c;是Java SE 和Java EE 平台的一部分。 JAX-WS 2.0 规范是代替JAX-RPC 1.0的下一代Web服务AP…

红蓝对抗——信息收集

文章目录 1. 基础篇1.1 企业架构收集1.2 ICP 备案查询1.3 DNS 解析记录1.4 网络汇测1.5 C段收集1.6 证书收集1.7 接口收集1.8 APK信息收集1.9 公众号信息收集1.10 站点敏感信息收集1.11 供应链/业务链收集1.12 人员信息收集1.13 Google1.14 github信息收集 2. 进阶篇2.1 子域名…

C++ 异常和错误处理机制:如何使您的程序更加稳定和可靠

在C编程中&#xff0c;异常处理和错误处理机制是非常重要的。它们可以帮助程序员有效地处理运行时错误和异常情况。本文将介绍C中的异常处理和错误处理机制。 什么是异常处理&#xff1f; 异常处理是指在程序执行过程中发生异常或错误时&#xff0c;程序能够捕获并处理这些异常…

【打靶】vulhub打靶系列(一)—小白视野的渗透测试

主机探测 arpscan arp-scan -l 另一种方法arping for i in $(seq 1 200); do sudo arping -c 1 192.168.56.$i; done 注意这个必须是root权限 ​ 端口探测 nmap nmap -p- -sV -T4 192.168.56.104 发现8080端口 web测试 访问下web页面 1、通过逻辑点绕过 发送到xia_sq…