泰坦尼克号数据_数据分析-泰坦尼克号乘客生存率预测

项目背景

目标

预测一个乘客是否能够在泰坦尼克号事件中幸存。

概述

1912年4月15日,泰坦尼克号在首次航行期间撞上冰山后沉没,船上共有2224名人员(包括乘客和机组人员),共有1502人不幸遇难。造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管在沉船事件中能否幸存有一定的运气因素,但有些人存活几率更大,比如女人,孩子以及上流社会人士。
通过使用机器学习工具来预测哪些人员在时间中幸存。

理解数据

数据总览

Titanic生存模型预测,包含了两组数据:train.csv和test.csv,分别为训练数据集和测试数据集。

首先,导入数据:

import pandas as pd
import numpy as np
import re# 导入数据
train_data = pd.read_csv('train.csv')
#预览数据
train_data.head(2)

034c7c21c3824d041352f28fb534dd05.png

可以看到,训练数据集共有12列,其中Survived字段表示该乘客是否获救,其余为乘客信息,包括: PassengerID:乘客ID Pclass:乘客船舱等级 Name:姓名 Sex:性别 Age:年龄 SibSp:兄弟姐妹数量 Parch:父母子女数量 Ticket:船票信息 Fare:票价 Cabin:客舱信息 * Embarked:登船港口

查看数据整体信息:

train_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KBtrain_data.describe()

bf95886145a3dbe3d49c5f95e837779d.png

从上面可以看出,训练集共有891名乘客,但是有些属性数据不全,如Age和Cabin。大约有38%的人员最终获救;平均年龄大概是29岁,Age的最小值为0.42,表示的应该是婴儿的年龄,最大值为80岁;Fare票价的平均值为32,中位数为14,平均值是中位数的2.3倍,说明该特征的分布是严重的偏右,且最大值为512,很有可能是一个异常值。

数据初步分析

分析各属性与获救结果的关系,并选择合适的可视化方法进行数据可视化分析

数据分类

  1. 数值类型: 乘客ID(PassengerID),年龄(Age),票价(Fare),兄弟姐妹数量(SibSp),父母子女数量(Parch)
  2. 分类数据:

有直接类别的:乘客性别(Sex),客舱等级(Pclass),登船港口(Embarked)

待提取的特征:乘客姓名(Name),客舱号(Cabin),船票号(Ticket)

import matplotlib.pyplot as plt
import seaborn as sns

可视化

  • 先从容易入手的3种分类特征进行可视化,SexPclassEmbarked特征分析
fig, axes = plt.subplots(1,3, figsize=(20, 6))
sns.countplot('Sex', hue='Survived', data=train_data, ax=axes[0])
sns.countplot('Pclass', hue='Survived', data=train_data, ax=axes[1])
sns.countplot('Embarked', hue='Survived', data=train_data, ax=axes[2])
<matplotlib.axes._subplots.AxesSubplot at 0x1a253bdac8>

8147992860e963ca04b9f6bc7a2b65b6.png

通过观察各特征的分布情况与目标变量之间的关系,初步得出如下结论: Sex:男性总人数大于女性总人数,但女性的存活率要远远高于男性; Pclass:1等舱存活率最高,3等舱存活率明显低于其他舱,这是由于3等舱的多为普通人,而等级越高的舱位越有可能是当时社会地位较高的人; * Embarked:S港口登船的数量最多,但是获救率最低;

不同船舱等级下各性别的获救情况:

train_data[['Sex', 'Pclass', 'Survived']].groupby(['Pclass', 'Sex']).mean()

a8d7221a02e8604172363c2c5f05afe7.png
train_data[['Sex', 'Pclass', 'Survived']].groupby(['Pclass', 'Sex']).mean().plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x1a25891ef0>

381e4ed3cb884d256274e06fd01c813b.png
  • 亲友的人数与存活与否的关系 SibSp & Parch
fig, axes=plt.subplots(1, 2, figsize=(16, 6))
train_data[['SibSp', 'Survived']].groupby('SibSp').mean().plot.bar(ax=axes[0])
train_data[['Parch', 'Survived']].groupby('Parch').mean().plot.bar(ax=axes[1])
<matplotlib.axes._subplots.AxesSubplot at 0x1a25ae9da0>

3caa7e332e31f1708d4b897fe45c6ed8.png

从亲友人数的获救概率上来看,独自一人的乘客获救概率较低

  • 年龄特征分析 Age

年龄特征分布:

fig, axes = plt.subplots(1, 2, figsize=(16,6))
train_data['Age'].hist(bins=70, ax=axes[0])
axes[0].set_title('Age')train_data.boxplot(column='Age')
<matplotlib.axes._subplots.AxesSubplot at 0x1a25be7080>

660e203296d839dbf1afbc3b76c230ee.png
facet = sns.FacetGrid(train_data, aspect=4, row='Sex')
facet.map(sns.kdeplot, 'Age', shade=True)
facet.set(xlim=(0, train_data['Age'].max()))
facet.add_legend()

965be7929955f80eb239f80fb1283bc7.png

不同年龄下的生存分布情况:

facet = sns.FacetGrid(train_data, hue='Survived', aspect=4)
facet.map(sns.kdeplot, 'Age', shade=True)
facet.set(xlim=(0, train_data['Age'].max()))
facet.add_legend()

0cb14749fa5474db7622d3d3181c8899.png
facet = sns.FacetGrid(train_data, hue='Survived', aspect=4, row='Sex')
facet.map(sns.kdeplot, 'Age', shade=True)
facet.set(xlim=(0, train_data['Age'].max()))
facet.add_legend()

f8cefef5172f1ffc4f68a7d645efe15f.png

整体观察得知,0到十几岁的孩子生存率最高,20-30岁左右的生存率较低,而对于男性来说,0到十几岁的孩子生存率明显较高,而对于女性来说,则是30-40的年龄段生存率较高。

  • 票价特征分析Fare
train_data['Fare'].describe()
count    891.000000
mean      32.204208
std       49.693429
min        0.000000
25%        7.910400
50%       14.454200
75%       31.000000
max      512.329200
Name: Fare, dtype: float64train_data['Fare'].hist(bins=10)

04d736a78bff4d36f4f6918e972ae96f.png
train_data['Fare'][train_data['Survived']==0].mean()
22.117886885245877train_data['Fare'][train_data['Survived']==1].mean()
48.39540760233917

观察得知,低票价的数量多,而高票价的数量少,且生存乘客的平均票价是遇难乘客的2倍多。

乘客姓名,客舱号,船票号

  • 乘客姓名特征 Name
#定义函数,从姓名中获取头衔
def getTitle(name):str1 = name.split(',')[1]str2 = str1.split('.')[0]str3 = str2.strip()return str3Title = pd.DataFrame()
Title['Title'] = train_data['Name'].map(getTitle)
Title.head()

d3aa3ab5223f3c7d2d5bd74ef4345232.png
  • 船舱特征 Cabin
train_data['Cabin'].describe()
count             204
unique            147
top       C23 C25 C27
freq                4
Name: Cabin, dtype: object

由于船舱的缺失值太多,有效值仅为204,在做特征工程的时候可以丢弃,也可以简单的将数据分为有cabin记录和无cabin记录

train_data['Cabin'] = train_data['Cabin'].fillna('U0')
train_data['Has_cabin'] = train_data['Cabin'].apply(lambda x: 0 if x=='U0' else 1)train_data[['Has_cabin', 'Survived']].groupby('Has_cabin').mean().plot.bar()

e1ebce9987235870fc1138b2eef560fe.png

从分析可知,有船舱信息的乘客生存率较高

特征工程

数据准备

特征工程包括几个方面:

1. 变量转换

变量转换的目的是将数据转换为适合模型使用的数据,不同模型接受的数据类型不同。Scikit-learn要求数据都是数值型的numeric,所以要将原始数据类型转换为numeric。

所有的数据都可以归为两类: 定量型(quantitative)变量:如Age 定性性(qualitative)变量:如Embarked

Qualitative数据转换

  • 独热编码(Dummy)pd.get_dummies( )

适用于属性值域较小的特征,如 gender = {‘male’, ‘female’} * Factorizing 因子分解 pd.factorize( )

factorize把相同字符映射为同一个数字,这种映射最后只生产一个特征,不像dummies生成多个特征;

Quantitative数据转换

  • Scaling 数据标准化

unscaled data的弊端:1.数据可视化困难;2.数据范围差异过大可能导致大范围数值特征具有更高的权重,在某些对特征大小敏感的模型中会影响结果;

常见的scale方法有:

from sklearn.preprocessing import MinMaxScaler from sklearn.preprocessing import minmax_scale from sklearn.preprocessing import MaxAbsScaler from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import RobustScaler from sklearn.preprocessing import Normalizer

  • Binning 将连续数据离散化,存储的值被分布到一些‘箱’中,就像直方图的bin将数据划分成几块一样。

2. 缺失值处理

3. 特征工程

衍生变量:对特征进行衍生,产生新特征

在对数据进行特征工程时,我们不仅需要对训练数据进行处理,还需要同时对测试数据一起处理,使得二者具有相同的数据类型和数据分布。

train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')
test_data['Survived'] = 0
df = train_data.append(test_data)
/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py:6211: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version
of pandas will change to not sort by default.To accept the future behavior, pass 'sort=False'.To retain the current behavior and silence the warning, pass 'sort=True'.sort=sort)
df.head(2)

9e24e39c5ead7071c3ff967c585d7910.png
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1309 entries, 0 to 417
Data columns (total 12 columns):
Age            1046 non-null float64
Cabin          295 non-null object
Embarked       1307 non-null object
Fare           1308 non-null float64
Name           1309 non-null object
Parch          1309 non-null int64
PassengerId    1309 non-null int64
Pclass         1309 non-null int64
Sex            1309 non-null object
SibSp          1309 non-null int64
Survived       1309 non-null int64
Ticket         1309 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 132.9+ KB# 计算缺失率
df.isnull().sum()/len(df)Age            0.200917
Cabin          0.774637
Embarked       0.001528
Fare           0.000764
Name           0.000000
Parch          0.000000
PassengerId    0.000000
Pclass         0.000000
Sex            0.000000
SibSp          0.000000
Survived       0.000000
Ticket         0.000000
dtype: float64

合并后数据共1309条,其中Age、Cabin、Embarked、Fare项有缺失,根据具体的情况进行缺失值处理

  • Fare 票价

Fare仅缺失一个值,可以用平均值填充

df['Fare'] = df['Fare'].fillna(df['Fare'].mean())
  • Embarked 登船口

Embarked仅缺失了2条数据,可以众数填充

df['Embarked'].value_counts()
S    914
C    270
Q    123
Name: Embarked, dtype: int64
df['Embarked'] = df['Embarked'].fillna('S')

有三种不同的港口,通过dummies转换为numeric数据

# 为了后面的特征分析,将Embarked特征进行factorizing
df['Embarked'] = pd.factorize(df['Embarked'])[0]
# 使用get_dummies 获取 one_hot 编码
embarked_dummies = pd.get_dummies(df['Embarked'], prefix=df[['Embarked']].columns[0])
df = pd.concat([df, embarked_dummies], axis=1)
  • Sex 性别

Sex特征无缺失,需要做变量转换,转换成numeric类型数据

df['Sex'] = pd.factorize(df['Sex'])[0]
sex_dummies = pd.get_dummies(df['Sex'], prefix='Sex')
df = pd.concat([df, sex_dummies], axis=1)
  • Pclass 船舱等级
df['Pclass'] = pd.factorize(df['Pclass'])[0]
pclass_dummies = pd.get_dummies(df['Pclass'], prefix='Pclass')
df = pd.concat([df, pclass_dummies], axis=1)
  • Cabin 船舱号

Cabin项的缺失值太多,缺失率达到77%,很难进行分析,作为特征输入也会影响模型结果。可以舍弃。但是从有无船舱号这一角度,可以创建一个衍生特征,Has_cabin项。

# 将缺失项填充为U0
df['Cabin'] = df['Cabin'].fillna('U0')
df['Has_cabin'] = df['Cabin'].apply(lambda x: 0 if x=='U0' else 1)
  • Name 姓名

观察数据可知,姓名中包含乘客身份信息的称呼,需要从姓名中进行提取

# 从name中提取称呼
df['Title'] = df['Name'].map(lambda x: x.split(',')[1].split('.')[0].strip())
# 建立映射字典
Title_dictionary = {'Capt': 'Officer','Col': 'Officer','Major': 'Officer','Jonkheer':'Royalty','Don': 'Royalty','Sir': 'Royalty','Dr': 'Officer','Rev': 'Officer','the Countess': 'Royalty','Dona': 'Royalty','Mme': 'Mrs','Mlle': 'Miss','Ms': 'Mrs','Mr': 'Mr','Mrs': 'Mrs','Miss': 'Miss','Master': 'Master','Lady': 'Royalty'
}
df['Title'] = df['Title'].map(Title_dictionary)
title_dummies = pd.get_dummies(df['Title'], prefix='Title')
df = pd.concat([df, title_dummies], axis=1)
  • Parch and SibSp

由前面的分析可知,亲友的数量对Survived有所影响,这里将两者合并为FamilySize这一组合项,同时保留这两列。

family = pd.DataFrame()family['FamilySize'] = df['Parch'] + df['SibSp'] + 1
family['Family_Single'] = family['FamilySize'].map(lambda x: 1 if x == 1 else 0)
family['Family_Small'] = family['FamilySize'].map(lambda x: 1 if 2 <= x <=4 else 0)
family['Family_Large'] = family['FamilySize'].map(lambda x: 1 if 5 <= x else 0)family.head()

62665ca6cf2ec462ecd1453316e60a02.png
df = pd.concat([df, family], axis=1)
df.head()

4f9be018e0a39344e7fc5e178df7c16a.png
  • Age年龄
df['Age'] = df['Age'].fillna(df['Age'].mean())

特征选择

  • 对特征间的相关性进行分析
corr_df = df.corr()# 查看各个特征与Survived的相关系数corr_df['Survived'].sort_values(ascending = False)
Survived         1.000000
Sex              0.404020
Sex_1            0.404020
Title_Miss       0.263140
Has_cabin        0.245239
Title_Mrs        0.235600
Pclass_1         0.208166
Family_Small     0.202162
Pclass           0.175184
Fare             0.173630
Embarked_1       0.096513
Pclass_2         0.062279
Title_Master     0.058265
Parch            0.054908
Embarked         0.048409
Title_Royalty    0.036875
FamilySize       0.020555
Embarked_2      -0.012730
Title_Officer   -0.013356
SibSp           -0.014375
Age             -0.060203
Embarked_0      -0.077095
Family_Large    -0.081979
Family_Single   -0.154285
Pclass_0        -0.231169
PassengerId     -0.331493
Sex_0           -0.404020
Title_Mr        -0.411211
Name: Survived, dtype: float64
  • 标准化

标准化的目的主要是消除不同特征之间的量纲和取值范围不同造成的差异。这些差异,不仅会造成数据偏重不均,还会在可视化方面造成困扰。

使用sklearn.preprocessing.StandardScaler类,该类的好处是可以保存数据集中的参数的「均值、方差」

这里对Age和Fare数据进行标准化处理

from sklearn import preprocessingscale_age_fare = preprocessing.StandardScaler().fit(df[['Age', 'Fare']])
df[['Age', 'Fare']] = scale_age_fare.transform(df[['Age', 'Fare']])
df.head(2)

940f6deda9fae360fc5be0c585ae4cb2.png
  • 弃掉无用特征

在特征工程中,我们从一些原始特征中提取来很多要融合到模型中的特征,但是我们还需要提出一些我们用不到或者非数值特征:

首先,对数据进行一下备份,以便后期的再次分析:

df_backup = df
df.drop(['PassengerId', 'Cabin', 'Embarked', 'Sex', 'Name', 'Title', 'Pclass', 'Parch', 'SibSp', 'Ticket', 'FamilySize'], axis =1, inplace = True)
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1309 entries, 0 to 417
Data columns (total 21 columns):
Age              1309 non-null float64
Fare             1309 non-null float64
Survived         1309 non-null int64
Embarked_0       1309 non-null uint8
Embarked_1       1309 non-null uint8
Embarked_2       1309 non-null uint8
Sex_0            1309 non-null uint8
Sex_1            1309 non-null uint8
Pclass_0         1309 non-null uint8
Pclass_1         1309 non-null uint8
Pclass_2         1309 non-null uint8
Has_cabin        1309 non-null int64
Title_Master     1309 non-null uint8
Title_Miss       1309 non-null uint8
Title_Mr         1309 non-null uint8
Title_Mrs        1309 non-null uint8
Title_Officer    1309 non-null uint8
Title_Royalty    1309 non-null uint8
Family_Single    1309 non-null int64
Family_Small     1309 non-null int64
Family_Large     1309 non-null int64
dtypes: float64(2), int64(5), uint8(14)
memory usage: 99.7 KB
df.head()

32fd99b0eec1262f2ae942ed6383f83b.png

构建模型

划分训练数据集和测试数据集

train_data = df[:891]
test_data = df[891:]train_data_X = train_data.drop(['Survived'], axis=1)
train_data_Y = train_data['Survived']test_data_X = test_data.drop(['Survived'], axis=1)
train_data_X.shape
(891, 20)
from sklearn.model_selection import train_test_split#建立模型用的训练数据集和测试数据集
train_X, test_X, train_y, test_y = train_test_split(train_data_X, train_data_Y, train_size=.8)
/anaconda3/lib/python3.7/site-packages/sklearn/model_selection/_split.py:2179: FutureWarning: From version 0.21, test_size will always complement train_size unless both are specified.FutureWarning)
train_X.shape
(712, 20)
test_X.shape
(179, 20)

选择机器学习算法

线性回归算法

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()

训练模型

model.fit(train_X, train_y)LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,intercept_scaling=1, max_iter=100, multi_class='warn',n_jobs=None, penalty='l2', random_state=None, solver='warn',tol=0.0001, verbose=0, warm_start=False)

评估模型

model.score(test_X, test_y)
0.8212290502793296

方案实施

pred_Y  = model.predict(test_data_X)
pred_Y
array([0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1,1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1,1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1,1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1,1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1,0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1,1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1,0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0,1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1,0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1,0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0,0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0,1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1,0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1])

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

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

相关文章

linux mysql服务器安装_Linux服务器MySQL安装

Linux服务器MySQL安装1. MySQL官网下载如图&#xff1a;2. 安装MySQL[rootiZ2zebb0428roermd00462Z /]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch#过滤MySQL&#xff1a;[rootiZ2zebb0428roermd00462Z /]#yum repolist all |grep mysql#ena…

客户端渲染换为服务器端渲染_服务器与客户端渲染(AngularJS与服务器端MVC)

客户端渲染换为服务器端渲染关于服务器与客户端应用程序渲染的讨论很多。 虽然没有“一刀切”的解决方案&#xff0c;但我将尝试从不同的角度主张客户端&#xff08;特别是AngularJS&#xff09;。 首先是建筑。 建筑 做得好的架构已经明确定义了关注点分离&#xff08;SoS&am…

python3 array为什么不能放不同类型的数据_来自俄罗斯的凶猛彪悍的分析数据库ClickHouse...

点击上方蓝色字体&#xff0c;选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注&#xff0c;大数据开发领域最强公众号&#xff01;暴走大数据点击右侧关注&#xff0c;暴走大数据&#xff01;ClickHouse相关文章推荐&#xff1a;战斗民族开源 | ClickHo…

php mysql 实现原理_PHP底层和mysql的通信原理

要清楚的几个概念&#xff1a;FPM进程&#xff1a;进程数在php-fpm.ini中设置。没有设置 max_requests &#xff0c;那么进程是不会销毁的&#xff0c;也就是说当一个进程里面出现死循环或者内存溢出等导致进程僵死的情况出现的时候&#xff0c;处理的进程就会少一个。mysql连接…

通过READ-BEHIND CACHE来控制缓慢的生产者

在我们的互联世界中&#xff0c;我们经常使用我们不拥有或无权改善的API中的数据。 如果一切顺利&#xff0c;他们的表现就会很好&#xff0c;每个人都会感到高兴。 但是太多次&#xff0c;我们不得不使用延迟小于最佳延迟的 API。 当然&#xff0c;答案是缓存该数据 。 但是&…

mysql用户名锁定_MySQL用户锁定

修改方式&#xff1a;set global log_warnings2;MySQL 5.5版本官方文档中&#xff0c;并没有用户锁的状态。因此不存在用户会被锁。。The account-locking capability depends on the presence of the account_locked column in themysql.user table. For upgrades to MySQL 5.…

python package和目录_PyCharm中Directory与Python package的区别

对于Python而言&#xff0c;有一点是要认识明确的&#xff0c;python作为一个相对而言轻量级的&#xff0c;易用的脚本语言(当然其功能并不仅限于此&#xff0c;在此只是讨论该特点)&#xff0c;随着程序的增长&#xff0c;可能想要把它分成几个文件&#xff0c;以便逻辑更加清…

mysql过滤器_MYSQL复制过滤器

vim /etc/my.cnf.d/mariadb-server.cnf[mysqld]binlog-do-dbdb1 #白名单模式&#xff0c;仅允许主服务器上生成db1的二进制日志&#xff0c;此选项不支持一行指定多个参数&#xff0c;需要每个参数写一行binlog-do-dbdb2重启服务systemctl restart mariadb.service主服务器…

mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享

[背景简介]MySQL是一种开放源代码的关系型数据库管理系统(RDBMS)&#xff0c;因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下&#xff0c;MySQL是管理内容最好的选择。mysql虽然功能未必很强大&#xff0c;但因为它的开源、广泛传播&#xf…

junit编写测试代码_编写数据访问代码测试-不测试框架

junit编写测试代码当我们向数据访问代码编写测试时&#xff0c;是否应该测试其公共API的每种方法&#xff1f; 一开始听起来很自然。 毕竟&#xff0c;如果我们不测试所有内容&#xff0c;那么如何知道我们的代码可以按预期工作&#xff1f; 这个问题为我们提供了重要的线索&…

mysql直接执行文件格式_Windows 环境下执行 .sql 格式文件方式

windows 命令行中有2种执行 .sql 文件的方式&#xff1a;直接行文件 和 先进入mysql命令行然后执行文件。具体操作如下:1. 直接在windows命令行执行。打开windows命令行(winR打开运行窗口然后输入cmd&#xff0c;回车)&#xff0c;进入mysql的本机地址&#xff0c;如果配置了环…

python输入多个坐标点_判断多个坐标是否在同一条直线上|Python练习系列[13]

练习内容:判断多个坐标是否在同一条直线上完整代码和注释如下print(请输入几个点的横纵坐标,程序将会返回这几个点是否在同一条直线上)def coor_nums():#获得每个值的横纵坐标int_list[]#初始化坐标列表wrong_list[]#初始化错误列表judgement#判断是否需要修正坐标值while True…

Java大数据处理的流行框架

大数据挑战 在公司需要处理不断增长的数据量的各个领域中&#xff0c;对大数据的概念有不同的理解。 在大多数这些情况下&#xff0c;需要以某种方式设计所考虑的系统&#xff0c;以便能够处理该数据&#xff0c;而不会随着数据大小的增加而牺牲吞吐量。 从本质上讲&#xff0c…

工信部python证书多少钱_python requests SSL证书问题

错误信息如下&#xff1a;requests.exceptions.SSLError: ("bad handshake: Error([(SSL routines, tls_process_server_certificate, certificate verify failed)],)",)python做爬虫&#xff0c;对于有的网站&#xff0c;需要验证证书&#xff0c;比如&#xff1a;1…

mysql binlog线程恢复_使用MySQL SQL线程回放Binlog实现恢复

[toc]1. 需求部分1.1 基于MySQL复制同步特性&#xff0c;尝试使用Replication的SQL线程来回放binlog&#xff0c;可基于以下逻辑模拟场景做全量xtrabackup备份模拟日常备份执行sysbench压测4张表&#xff0c;20个线程&#xff0c;压测10分钟&#xff0c;模拟大量binlog删除实例…

带有Prometheus的Spring Boot和测微表第6部分:保护指标

以前&#xff0c;我们使用Prometheus成功启动了Spring Boot应用程序。 Spring应用程序中的一个端点正在公开我们的指标数据&#xff0c;以便Prometheus能够检索它们。 想到的主要问题是如何保护此信息。 Spring已经为我们提供了强大的安全框架 因此&#xff0c;将其轻松用于…

列举python中常用的数据类型_列举Python常用数据类型并尽量多的写出其中的方法...

#1 把字符串的第一个字符大写string.capitalize()#2 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串string.center(width)#3 返回 str 在 string 里面出现的次数&#xff0c;如果 beg 或者 end 指定则返回指定范围内 str 出现的次数string.count(str, beg0, endl…

mysql 二元分词_MySQL 中文分词原理

一&#xff0c;首先我们来了解一下其他几个知识点&#xff1a;1. Mysql的索引意义&#xff1f;索引是加快访问表内容的基本手段&#xff0c;尤其是在涉及多个表的关联查询里。当然&#xff0c;索引可以加快检索速度&#xff0c;但是它也同时降低了索引列的插入&#xff0c;删除…

python 元类 type_Python 使用元类type创建类对象常见应用详解

本文实例讲述了Python 使用元类type创建类对象。分享给大家供大家参考&#xff0c;具体如下&#xff1a;type("123") 可以查看变量的类型;同时 type("类名",(父类),{类属性:值,类属性2:值}) 可以创建一个类。在Python中不建议一个函数具有不同的功能(重载)…

使用AWS Elastic Beanstalk轻松进行Spring Boot部署

朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户&#xff1f; 立即尝试Okta的API和Java SDK。 在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 几乎所有应用程序都依赖于身份验证。 开发人员以及雇用他们的公司都想确认谁在发出请求&…