当前位置: 首页 > news >正文

ChatGPT4深度解析:探索智能对话新境界

大模型chatgpt4分析功能初探

目录

1、探测目的

2、目标变量分析

3、特征缺失率处理

4、特征描述性分析

5、异常值分析

6、相关性分析

7、高阶特征挖掘

1、探测目的

1、分析chat4的数据分析能力,提高部门人效

2、给数据挖掘提供思路

3、原始数据:
https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques

2、目标变量分析

要开始我们的分析,我们应该:

  1. 检查数据集中的缺失值
  2. 探索目标变量
    SalePrice
    的分布

  3. 进行基本的探索性数据分析 (EDA) 以理解特征与目标变量之间的关系

让我们首先检查训练和测试数据集中的缺失值。

完成工作

展示工作内容

以下是训练和测试数据集中各列的缺失值百分比:

训练数据(缺失值最多的前5列):
  • PoolQC
    :99.52%
  • MiscFeature
    :96.30%
  • Alley
    :93.77%
  • Fence
    :80.75%
  • FireplaceQu
    :47.26%
测试数据(缺失值最多的前5列):
  • PoolQC
    :99.79%
  • MiscFeature
    :96.50%
  • Alley
    :92.67%
  • Fence
    :80.12%
  • FireplaceQu
    :50.03%


PoolQC

MiscFeature

Alley
,有非常高的缺失值百分比。尽管我们可以考虑删除这些列,但它们仍然可能提供有价值的信息。例如,
PoolQC
的缺失值可能表示没有游泳池,这对模型可能是有信息量的。


接下来,让我们探索目标变量
SalePrice
的分布,以了解其特性。



SalePrice
变量的分布显示它是右偏的,大多数房屋的价格处于中低价范围,而高价范围的房屋较少。

考虑到比赛的评估指标(预测值的对数与观测销售价格的对数之间的RMSE),使用对数变换转换
SalePrice
会更有利,使其分布更加正常。这种转换还可以帮助提高基于线性回归的模型的性能。

让我们可视化对数变换后的
SalePrice
的分布来确认这一点。


Show work

import numpy as np# Apply a logarithmic transformation to SalePrice
log_saleprice = np.log1p(train_data['SalePrice'])# Plot the distribution of the transformed SalePrice
plt.figure(figsize=(12, 6))
sns.histplot(log_saleprice, kde=True, bins=30)
plt.title('Distribution of Log-transformed SalePrice')
plt.xlabel('Log-transformed SalePrice')
plt.ylabel('Frequency')
plt.show()


对数变换使得
SalePrice
的分布看起来更加正态化(钟形)。这种变换可能会提高我们模型的性能,特别是如果我们决定使用基于线性回归的方法。

根据这些信息,我们接下来的步骤可能包括:

  1. 处理缺失值
  2. 进行特征工程和变换
  3. 构建和评估各种回归模型
  4. 对模型进行微调以获得最佳性能

3、特征缺失率处理

处理缺失值的策略

:

  1. 高缺失率的列(例如,> 90%)
    :由于这些列的稀疏性,它们可能不会增加太多价值。但在决定删除它们之前,我们需要确定缺失值本身是否带有信息。例如,
    PoolQC
    中的缺失值可能表示没有游泳池,这可能是有信息量的。
  2. 数值列
    :这些可以使用中位数或均值进行估计。我们通常使用中位数,因为它对异常值更为稳健。
  3. 分类列
    :缺失值可以用一个新的类别替换,例如"None"或"Missing"。这样,模型仍然可以使用这些信息。

现在,让我们为训练和测试数据集中每个带有缺失值的列定义一个策略。

# Define strategies for handling missing values
strategies = {}# Columns with a high missing rate
high_missing = ['PoolQC', 'MiscFeature', 'Alley', 'Fence']
for col in high_missing:strategies[col] = 'Fill with "None" - likely indicates absence of feature.'# Numerical columns
numerical_cols = train_data.select_dtypes(include=[np.number]).columns
for col in numerical_cols:if col in train_missing or col in test_missing:strategies[col] = 'Impute with median - robust to outliers.'# Categorical columns
categorical_cols = train_data.select_dtypes(exclude=[np.number]).columns
for col in categorical_cols:if col in train_missing or col in test_missing:strategies[col] = 'Fill with "None" - new category for missing values.'# Display the strategies
strategies

这是我们为每个带有缺失值的列设计的策略:
  1. 高缺失率的列
    (例如,
    PoolQC

    MiscFeature

    Alley

    Fence
    ):填充为"None"。这基于一个假设,即信息的缺失很可能表示该特性本身的缺失。
  2. 数值列
    (例如,
    LotFrontage

    MasVnrArea
    ):使用该列的中位数进行估计。使用中位数是因为它对异常值更为稳健。
  3. 分类列
    (例如,
    MSZoning

    Utilities
    ):填充为"None",这将作为表示缺失值的新类别。

现在,让我们将这些策略应用到训练和测试数据集中。

# Apply the strategies to handle missing values# Handle high missing rate columns
for col in high_missing:train_data[col].fillna("None", inplace=True)test_data[col].fillna("None", inplace=True)# Handle numerical columns
for col in numerical_cols:if col in train_missing or col in test_missing:median_value = train_data[col].median()  # Calculate median using train data onlytrain_data[col].fillna(median_value, inplace=True)test_data[col].fillna(median_value, inplace=True)# Handle categorical columns
for col in categorical_cols:if col in train_missing or col in test_missing:train_data[col].fillna("None", inplace=True)test_data[col].fillna("None", inplace=True)# Check if there are any remaining missing values
train_missing_final = train_data.isnull().sum().max()
test_missing_final = test_data.isnull().sum().max()train_missing_final, test_missing_final

在训练和测试数据集中的所有缺失值都已成功处理。现在,两个数据集中都没有缺失值。

您想继续进行更深入的探索性数据分析、特征工程,还是直接开始构建模型?

3、特征描述性分析

问题:结合上文,使用中文解答,使用修改后的数据,对train表进行统计描述分析摘要

统计描述分析可以为我们提供数据集中每个特征的中心趋势、分散和形状的概述。接下来,我将为修改后的
train
数据集生成描述性统计摘要。这包括:均值、标准偏差、最小值、25%分位数、中位数、75%分位数和最大值。

# Generate descriptive statistics summary for the train dataset
train_summary = train_data.describe().transpose()train_summaryRESULTcount           mean           std      min        25%  \
Id             1460.0     730.500000    421.610009      1.0     365.75   
MSSubClass     1460.0      56.897260     42.300571     20.0      20.00   
LotFrontage    1460.0      69.863699     22.027677     21.0      60.00   
LotArea        1460.0   10516.828082   9981.264932   1300.0    7553.50   
OverallQual    1460.0       6.099315      1.382997      1.0       5.00   
OverallCond    1460.0       5.575342      1.112799      1.0       5.00   
YearBuilt      1460.0    1971.267808     30.202904   1872.0    1954.00   
YearRemodAdd   1460.0    1984.865753     20.645407   1950.0    1967.00   
MasVnrArea     1460.0     103.117123    180.731373      0.0       0.00   
BsmtFinSF1     1460.0     443.639726    456.098091      0.0       0.00   
BsmtFinSF2     1460.0      46.549315    161.319273      0.0       0.00   
BsmtUnfSF      1460.0     567.240411    441.866955      0.0     223.00   
TotalBsmtSF    1460.0    1057.429452    438.705324      0.0     795.75   
1stFlrSF       1460.0    1162.626712    386.587738    334.0     882.00   
2ndFlrSF       1460.0     346.992466    436.528436      0.0       0.00   
LowQualFinSF   1460.0       5.844521     48.623081      0.0       0.00   
GrLivArea      1460.0    1515.463699    525.480383    334.0    1129.50   
BsmtFullBath   1460.0       0.425342      0.518911      0.0       0.00   
BsmtHalfBath   1460.0       0.057534      0.238753      0.0       0.00   
FullBath       1460.0       1.565068      0.550916      0.0       1.00   
HalfBath       1460.0       0.382877      0.502885      0.0       0.00   
BedroomAbvGr   1460.0       2.866438      0.815778      0.0       2.00   
KitchenAbvGr   1460.0       1.046575      0.220338      0.0       1.00   
TotRmsAbvGrd   1460.0       6.517808      1.625393      2.0       5.00   
Fireplaces     1460.0       0.613014      0.644666      0.0       0.00   
GarageYrBlt    1460.0    1978.589041     23.997022   1900.0    1962.00   
GarageCars     1460.0       1.767123      0.747315      0.0       1.00   
GarageArea     1460.0     472.980137    213.804841      0.0     334.50   
WoodDeckSF     1460.0      94.244521    125.338794      0.0       0.00   
OpenPorchSF    1460.0      46.660274     66.256028      0.0       0.00   
EnclosedPorch  1460.0      21.954110     61.119149      0.0       0.00   
3SsnPorch      1460.0       3.409589     29.317331      0.0       0.00   
ScreenPorch    1460.0      15.060959     55.757415      0.0       0.00   
PoolArea       1460.0       2.758904     40.177307      0.0       0.00   
MiscVal        1460.0      43.489041    496.123024      0.0       0.00   
MoSold         1460.0       6.321918      2.703626      1.0       5.00   
YrSold         1460.0    2007.815753      1.328095   2006.0    2007.00   
SalePrice      1460.0  180921.195890  79442.502883  34900.0  129975.00   50%        75%       max  
Id                730.5    1095.25    1460.0  
MSSubClass         50.0      70.00     190.0  
LotFrontage        69.0      79.00     313.0  
LotArea          9478.5   11601.50  215245.0  
OverallQual         6.0       7.00      10.0  
OverallCond         5.0       6.00       9.0  
YearBuilt        1973.0    2000.00    2010.0  
YearRemodAdd     1994.0    2004.00    2010.0  
MasVnrArea          0.0     164.25    1600.0  
BsmtFinSF1        383.5     712.25    5644.0  
BsmtFinSF2          0.0       0.00    1474.0  
BsmtUnfSF         477.5     808.00    2336.0  
TotalBsmtSF       991.5    1298.25    6110.0  
1stFlrSF         1087.0    1391.25    4692.0  
2ndFlrSF            0.0     728.00    2065.0  
LowQualFinSF        0.0       0.00     572.0  
GrLivArea        1464.0    1776.75    5642.0  
BsmtFullBath        0.0       1.00       3.0  
BsmtHalfBath        0.0       0.00       2.0  
FullBath            2.0       2.00       3.0  
HalfBath            0.0       1.00       2.0  
BedroomAbvGr        3.0       3.00       8.0  
KitchenAbvGr        1.0       1.00       3.0  
TotRmsAbvGrd        6.0       7.00      14.0  
Fireplaces          1.0       1.00       3.0  
GarageYrBlt      1980.0    2001.00    2010.0  
GarageCars          2.0       2.00       4.0  
GarageArea        480.0     576.00    1418.0  
WoodDeckSF          0.0     168.00     857.0  
OpenPorchSF        25.0      68.00     547.0  
EnclosedPorch       0.0       0.00     552.0  
3SsnPorch           0.0       0.00     508.0  
ScreenPorch         0.0       0.00     480.0  
PoolArea            0.0       0.00     738.0  
MiscVal             0.0       0.00   15500.0  
MoSold              6.0       8.00      12.0  
YrSold           2008.0    2009.00    2010.0  
SalePrice      163000.0  214000.00  755000.0  

以下是对训练数据集的描述性统计摘要:

  1. Id
    : 这是一个连续的整数,从1到1460,代表每个房屋的唯一标识。
  2. MSSubClass
    : 这是关于住宅类型的数据,其平均值为56.9,最小值为20,最大值为190。
  3. LotFrontage
    : 表示与物业相连的街道的线性英尺。平均值为69.9,中位数为69,有些房屋与街道的连接超过300英尺。
  4. OverallQual
    : 表示房屋的整体材料和成品质量,它是一个从1到10的评分,平均评分为6.1。
  5. YearBuilt
    : 这是房屋建成的年份,最早的房屋建于1872年,最新的房屋建于2010年。
  6. GrLivArea
    : 表示地上居住面积的平方英尺。平均值为1515.5平方英尺,中位数为1464平方英尺,有些房屋的面积超过5600平方英尺。
  7. SalePrice
    : 这是我们的目标变量,表示房屋的销售价格。其平均值为$180,921,中位数为$163,000,价格范围从$34,900到$755,000。

4、异常值分析

问题:结合上文,使用修改后的数据,对train表进行异常值分析和处理,分别给出每列数据的处理方法和原因

以下是我们进行异常值分析和处理的策略:

  1. 可视化方法
    :对于关键特征,我们可以使用箱线图和散点图来识别潜在的异常值。
  2. 统计方法
    :可以使用像IQR(四分位数范围)这样的方法来确定异常值的范围。

对于本竞赛,我们将重点关注与
SalePrice
(目标变量)高度相关的特征,因为它们对模型性能的影响最大。

让我们首先计算与
SalePrice
的相关性,以确定哪些特征最相关。然后,我们将针对这些特征进行异常值分析。

# Calculate the correlation of all features with 'SalePrice'
correlation = train_data.corr()['SalePrice'].sort_values(ascending=False)# Take the top 10 most positively correlated features (excluding SalePrice itself)
top_correlated_features = correlation.index[1:11]top_correlated_features, correlation[top_correlated_features](Index(['OverallQual', 'GrLivArea', 'GarageCars', 'GarageArea', 'TotalBsmtSF','1stFlrSF', 'FullBath', 'TotRmsAbvGrd', 'YearBuilt', 'YearRemodAdd'],dtype='object'),OverallQual     0.790982GrLivArea       0.708624GarageCars      0.640409GarageArea      0.623431TotalBsmtSF     0.6135811stFlrSF        0.605852FullBath        0.560664TotRmsAbvGrd    0.533723YearBuilt       0.522897YearRemodAdd    0.507101Name: SalePrice, dtype: float64)

以下是与
SalePrice
最相关的前10个特征及其相关性值:

  1. OverallQual
    : 0.79 - 描述房屋的整体材料和完成质量。
  2. GrLivArea
    : 0.71 - 地上居住面积的平方英尺。
  3. GarageCars
    : 0.64 - 车库容纳的车辆数量。
  4. GarageArea
    : 0.62 - 车库的大小,以平方英尺为单位。
  5. TotalBsmtSF
    : 0.61 - 地下室的总面积。
  6. 1stFlrSF
    : 0.61 - 第一层的面积。
  7. FullBath
    : 0.56 - 地上的全浴室数量。
  8. TotRmsAbvGrd
    : 0.53 - 地上的房间总数(不包括浴室)。
  9. YearBuilt
    : 0.52 - 原始建造日期。
  10. YearRemodAdd
    : 0.51 - 重新模型日期。

接下来,我们将使用散点图对这些特征进行可视化,以识别潜在的异常值。

# Visualize the top correlated features using scatter plots
plt.figure(figsize=(20, 15))for i, feature in enumerate(top_correlated_features, 1):plt.subplot(3, 4, i)sns.scatterplot(data=train_data, x=feature, y='SalePrice')plt.title(f'SalePrice vs {feature}')plt.xlabel(feature)plt.ylabel('SalePrice')plt.tight_layout()
plt.show()

通过散点图,我们可以观察到以下潜在的异常值:

  1. GrLivArea
    : 有两个点,它们的地上居住面积非常大,但其销售价格相对较低。这些可能是异常值。
  2. TotalBsmtSF
    : 有一个点,它的地下室面积非常大,但销售价格并不高。
  3. 1stFlrSF
    : 类似地,有一个点的一楼面积非常大,但销售价格较低。

异常值处理策略:

  1. GrLivArea
    : 删除那些地上居住面积大于4000平方英尺但销售价格低于$300,000的房屋。
  2. TotalBsmtSF
    : 删除地下室面积大于5000平方英尺的房屋。
  3. 1stFlrSF
    : 删除一楼面积大于4000平方英尺的房屋。

现在,我们将根据上述策略处理这些异常值。

# Handle outliers based on the observations# GrLivArea
train_data = train_data.drop(train_data[(train_data['GrLivArea'] > 4000) & (train_data['SalePrice'] < 300000)].index)# TotalBsmtSF
train_data = train_data.drop(train_data[train_data['TotalBsmtSF'] > 5000].index)# 1stFlrSF
train_data = train_data.drop(train_data[train_data['1stFlrSF'] > 4000].index)# Check the shape of the train data after removing outliers
train_data.shape

经过异常值处理后,训练数据集中现有1458个观测值和81个特征。原始数据集中的几个潜在异常值已被成功删除。

异常值处理是一个迭代过程。在建模和验证模型性能时,可能还需要进一步分析和处理其他异常值。

5、数据分布分析

问题:结合上文,使用修改后的数据,对train表进行数据分布分析和处理,分别给出每列数据的处理方法和原因

数据分布分析对于确保模型的准确性和鲁棒性非常重要,尤其是当我们使用假设输入特征为正态分布的模型(如线性回归)时。

数据分布分析策略

  1. 正态性检验
    :首先,我们可以使用可视化方法(如直方图或Q-Q图)以及统计测试(如Shapiro-Wilk测试)来检查数据的分布。
  2. 对数转换
    :对于偏斜的数据,我们可以考虑使用对数转换或其他转换来使其接近正态分布。
  3. 标准化/归一化
    :此外,对于某些模型,我们可能还需要对数据进行标准化或归一化,以确保所有特征都在相同的尺度上。

首先,我们将使用直方图来可视化训练数据中与
SalePrice
最相关的前10个特征的分布。这将帮助我们确定哪些特征可能需要进一步处理。

# Visualize the distribution of the top correlated features using histograms
plt.figure(figsize=(20, 15))for i, feature in enumerate(top_correlated_features, 1):plt.subplot(3, 4, i)sns.histplot(train_data[feature], kde=True, bins=30)plt.title(f'Distribution of {feature}')plt.xlabel(feature)plt.ylabel('Frequency')
plt.tight_layout()
plt.show()

从直方图中,我们可以观察到以下特征的数据分布:

  1. OverallQual
    : 这是一个序数特征,表示房屋的整体质量。其分布呈现多模式特征。
  2. GrLivArea
    ,
    TotalBsmtSF
    ,
    1stFlrSF
    : 这些特征都是表示面积的连续特征,它们的分布呈现右偏。
  3. GarageCars
    : 这是一个离散特征,表示车库的容量。大部分房屋有2辆车的车库。
  4. GarageArea
    : 这是一个连续特征,表示车库的面积,其分布也呈现右偏。
  5. FullBath
    : 这是一个离散特征,表示地上的全浴室数量。
  6. TotRmsAbvGrd
    : 这是一个离散特征,表示地上的房间总数。
  7. YearBuilt
    &
    YearRemodAdd
    : 这些是表示年份的特征,它们的分布显示了不同的模式,但不是正态分布。

处理策略

  1. 连续特征
    (如
    GrLivArea
    ,
    TotalBsmtSF
    ,
    1stFlrSF
    ,
    GarageArea
    ): 由于它们的分布呈现右偏,我们可以考虑对它们进行对数转换,以使其分布更接近正态分布。
  2. 离散特征

    序数特征
    (如
    OverallQual
    ,
    GarageCars
    ,
    FullBath
    ,
    TotRmsAbvGrd
    ): 通常不需要进行转换,但我们可以进一步对它们进行编码或转换,以便于模型处理。
  3. 年份特征

    YearBuilt
    ,
    YearRemodAdd
    ): 考虑到它们表示年份,我们可以将它们转换为“年龄”或“自上次翻新以来的年数”,这可能与
    SalePrice
    有更强的关联。

现在,我们将根据上述策略对这些特征进行处理。

# Apply log transformation to the skewed features
skewed_features = ['GrLivArea', 'TotalBsmtSF', '1stFlrSF', 'GarageArea']for feature in skewed_features:# Apply log transformation, adding 1 to handle cases where value is 0train_data[feature] = np.log1p(train_data[feature])# Convert year features to "age" related features
train_data['Age'] = train_data['YrSold'] - train_data['YearBuilt']
train_data['YearsSinceRemod'] = train_data['YrSold'] - train_data['YearRemodAdd']# Drop original year columns
train_data.drop(['YearBuilt', 'YearRemodAdd'], axis=1, inplace=True)# Visualize the transformed features
plt.figure(figsize=(20, 15))# Plotting the transformed skewed features
for i, feature in enumerate(skewed_features, 1):plt.subplot(3, 4, i)sns.histplot(train_data[feature], kde=True, bins=30)plt.title(f'Distribution of {feature}')# Plotting the new age features
new_age_features = ['Age', 'YearsSinceRemod']
for i, feature in enumerate(new_age_features, 1):plt.subplot(3, 4, i + 4)sns.histplot(train_data[feature], kde=True, bins=30)plt.title(f'Distribution of {feature}')plt.tight_layout()
plt.show()

经过处理后,以下是特征的新分布:

  1. GrLivArea
    ,
    TotalBsmtSF
    ,
    1stFlrSF
    ,
    GarageArea
    : 通过对数转换,这些特征的分布现在更接近正态分布。
  2. Age
    : 表示自建房以来的年数。大部分的房屋都是在近50年内建造的。
  3. YearsSinceRemod
    : 表示自上次翻新以来的年数。大部分房屋在过去25年内进行过翻新。

对于其他未在此列表中的特征,考虑到我们有多个特征,我们可能需要基于模型的反馈进行进一步的处理。例如,如果某个特征在模型训练中表现得非常糟糕,我们可以考虑进行进一步的转换或删除。

5、相关性分析

问题:结合上文,使用修改后的数据,对train表进行相关分析和处理,分别给出每列数据的处理方法和原因

相关分析是为了检查特征与目标变量之间以及特征与特征之间的关系。这有助于我们确定哪些特征与目标变量最相关,以及是否存在多重共线性问题(即两个或多个特征之间高度相关)。

处理策略

  1. 特征与目标变量之间的相关性
    :我们可以检查每个特征与
    SalePrice
    的相关性。高度相关的特征可能对模型预测非常有用。

  2. 特征与特征之间的相关性
    :如果两个特征之间存在高度相关性,我们可以考虑删除其中一个,以避免多重共线性问题。

  3. 处理方法

    • 保留与
      SalePrice
      高度相关的特征。
    • 从高度相关的特征对中删除其中一个。

首先,我们将计算所有特征与
SalePrice
的相关性,并检查特征之间的相关性。

# Calculate the correlation matrix
correlation_matrix = train_data.corr()# Get the correlation of all features with 'SalePrice'
saleprice_corr = correlation_matrix['SalePrice'].sort_values(ascending=False)# Get the pairs of features with correlation greater than 0.8
high_corr_pairs = correlation_matrix.abs().unstack().sort_values(ascending=False)
high_corr_pairs = high_corr_pairs[(high_corr_pairs > 0.8) & (high_corr_pairs < 1)]saleprice_corr, high_corr_pairs(SalePrice          1.000000OverallQual        0.795774GrLivArea          0.702933GarageCars         0.6410471stFlrSF           0.598540FullBath           0.562165TotRmsAbvGrd       0.537769MasVnrArea         0.477810Fireplaces         0.469862GarageYrBlt        0.467413BsmtFinSF1         0.409384GarageArea         0.371948LotFrontage        0.352688TotalBsmtSF        0.326639WoodDeckSF         0.324758OpenPorchSF        0.3211422ndFlrSF           0.320532HalfBath           0.284590LotArea            0.268179BsmtFullBath       0.228459BsmtUnfSF          0.214460BedroomAbvGr       0.168245ScreenPorch        0.111415PoolArea           0.099490MoSold             0.0461243SsnPorch          0.044568BsmtFinSF2        -0.011422BsmtHalfBath      -0.016881MiscVal           -0.021203Id                -0.021673LowQualFinSF      -0.025625YrSold            -0.028882OverallCond       -0.077948MSSubClass        -0.084276EnclosedPorch     -0.128646KitchenAbvGr      -0.135946YearsSinceRemod   -0.509706Age               -0.524067Name: SalePrice, dtype: float64,GrLivArea     TotRmsAbvGrd    0.822983TotRmsAbvGrd  GrLivArea       0.822983dtype: float64)

以下是与
SalePrice
相关性的结果:

  1. OverallQual
    : 0.80 - 房屋的整体材料和完成质量与销售价格高度相关。
  2. GrLivArea
    : 0.70 - 地上居住面积与销售价格有很强的正相关性。
  3. GarageCars
    : 0.64 - 车库大小(按车数量计)与销售价格有很强的正相关性。 … 以此类推。

此外,我们还发现了一对特征之间的高度相关性:

  • GrLivArea

    TotRmsAbvGrd
    : 相关性为0.82。这意味着这两个特征之间存在高度相关性,因此我们可能只需要其中一个。

处理策略

  1. 保留与
    SalePrice
    高度相关的特征。

  2. GrLivArea

    TotRmsAbvGrd
    中选择一个。考虑到
    GrLivArea

    SalePrice
    的相关性更高,我们可以保留
    GrLivArea
    并删除
    TotRmsAbvGrd

现在,我们将按照上述策略对数据进行处理。

# Drop the 'TotRmsAbvGrd' feature due to its high correlation with 'GrLivArea'
train_data.drop(['TotRmsAbvGrd'], axis=1, inplace=True)# Check the shape of the train data after dropping the feature
train_data.shape

处理后,训练数据集现有1458个观测值和80个特征。我们已经成功删除了与GrLivArea高度相关的TotRmsAbvGrd特征。样的处理有助于避免多重共线性问题,这可能会影响某些模型的性能。对于其他特征,如果模型的性能没有达到预期,我们可能需要进一步的相关分析。

6、预测性分析

chat4内存不够,计算不出来。

7、高阶特征挖掘

问题:结合上文,列举出30个新的组合特征,包含10个高阶特征,20个普通组合特征,组合特征的组合思路和物理含义是什么?使用表格展示

内存不够,导致算不出来

好的,根据您的要求,我会列出这些组合特征及其物理含义。但由于我们在实际创建和评估这些特征时遇到了内存问题,所以我将只为您提供这些特征的描述和物理含义。

高阶组合特征 (10个特征):

  1. GrLivArea*OverallQual

    • 组合思路:将居住面积与房屋整体质量相乘。
    • 物理含义:考虑居住面积和整体质量的共同影响。
  2. TotalBsmtSF/1stFlrSF

    • 组合思路:地下室的总面积与第一层的面积的比例。
    • 物理含义:比较地下室和第一层的大小。
  3. YearBuilt*OverallQual

    • 组合思路:建造年份与房屋整体质量的乘积。
    • 物理含义:考虑建造年份和整体质量的共同影响。
  4. GrLivArea-TotRmsAbvGrd

    • 组合思路:居住面积减去地上的房间数量。
    • 物理含义:每个房间的平均居住面积。
  5. BsmtFinSF1/BsmtFinType1

    • 组合思路:完成的地下室面积与地下室完成质量的比例。
    • 物理含义:完成的地下室的平均质量。
  6. GarageArea*GarageCars

    • 组合思路:车库面积与车库的车辆容量的乘积。
    • 物理含义:每辆车的平均车库面积。
  7. 1stFlrSF*2ndFlrSF

    • 组合思路:第一层和第二层的面积的乘积。
    • 物理含义:两层的总面积。
  8. Fireplaces*FireplaceQu

    • 组合思路:壁炉数量与壁炉质量的乘积。
    • 物理含义:所有壁炉的总质量。
  9. MasVnrArea*MasVnrType

    • 组合思路:砌体饰面面积与砌体饰面类型的乘积。
    • 物理含义:考虑砌体饰面的总面积和类型。
  10. OverallCond*ExterCond

    • 组合思路:房屋整体状况和外部材料状况的乘积。
    • 物理含义:整体和外部的综合状况。

普通组合特征 (20个特征):

  1. GrLivArea+LotArea

    • 组合思路:居住面积和占地面积的总和。
    • 物理含义:总的使用面积。
  2. BsmtFinSF1+BsmtFinSF2

    • 组合思路:两种类型的完成地下室面积的总和。
    • 物理含义:完成的地下室总面积。
  3. 1stFlrSF+2ndFlrSF

    • 组合思路:第一层和第二层的面积总和。
    • 物理含义:两层的总面积。
  4. GarageQual+GarageCond

    • 组合思路:车库质量和条件的总和。
    • 物理含义:车库的总体状况。
  5. ExterQual+ExterCond

    • 组合思路:外部材料的质量和状况的总和。
    • 物理含义:外部的总体状况。
  6. BsmtQual+BsmtCond

    • 组合思路:地下室的质量和状况的总和。
    • 物理含义:地下室的总体状况。
  7. BsmtFullBath+FullBath

    • 组合思路:地下室的全浴室数量和地上的全浴室数量的总和。
    • 物理含义:全浴室的总数量。
  8. HalfBath+BsmtHalfBath

    • 组合思路:地下室的半浴室数量和地上的半浴室数量的总和。
    • 物理含义:半浴室的总数量。
  9. YearBuilt+YearRemodAdd

    • 组合思路:建造年份和改造年份的总和。
    • 物理含义:房屋的总年龄和最近一次的改造年份。
  10. YrSold-YearBuilt

    • 组合思路:售出年份减去建造年份。
    • 物理含义:房屋在市场上的年龄。
  11. BsmtUnfSF

    • 组合思路:总地下室面积减去完成的地下室面积。
    • 物理含义:未完成的地下室面积。
  12. GarageCars-GarageArea

    • 组合思路:车库的车辆容量减去车库面积。
    • 物理含义:每辆车的平均车库面积。
  13. OverallQual-OverallCond

    • 组合思路:房屋的整体质量减去整体状况。
    • 物理含义:质量和状况之间的差异。
  14. TotRmsAbvGrd-BedroomAbvGr

    • 组合思路:地上的总房间数量减去卧室数量。
    • 物理含义:除卧室外的房间数量。
  15. GarageYrBlt-YearBuilt

    • 组合思路:车库建造年份减去房屋建造年份。
    • 物理含义:车库是在建造房屋后多久建的。
  16. Fireplaces+FireplaceQu

    • 组合思路:壁炉数量与壁炉质量的总和。
    • 物理含义:壁炉的总体状况。
  17. LotFrontage+LotArea

    • 组合思路:与街道接壤的线性脚数与占地面积的总和。
    • 物理含义:物业的总面积和与街道的接触。
  18. BsmtFinType1+BsmtFinType2

    • 组合思路:两种类型的地下室完成质量的总和。
    • 物理含义:地下室的总完成质量。
  19. PoolArea*PoolQC

    • 组合思路:泳池面积与泳池质量的乘积。
    • 物理含义:泳池的总体状况。
  20. Fence+LotShape

    • 组合思路:围栏质量与物业的形状的总和。
    • 物理含义:物业的整体外观和私密性。

这些特征可以为我们提供更多的信息,帮助我们更好地理解与目标变量之间的关系。但请注意,不是所有的组合特征都会提供有价值的信息,因此在实际应用中需要进行适当的特征选择和评估。

相关文章:

ChatGPT4深度解析:探索智能对话新境界

大模型chatgpt4分析功能初探 目录 1、探测目的 2、目标变量分析 3、特征缺失率处理 4、特征描述性分析 5、异常值分析 6、相关性分析 7、高阶特征挖掘 1、探测目的 1、分析chat4的数据分析能力&#xff0c;提高部门人效 2、给数据挖掘提供思路 3、原始数据&#xf…...

触底加载的两种思路(以vue3前端和nodejs后端为例)

一:首先,nodejs后端的代码都是一样的. 需要前端返回page参数,然后nodejs逻辑进行处理,截取页数和每页条数和总条数, 总条数用来作为判断是否有数据的条件,也可以不用,注意看下文 一:不用获取容器高度的. pinia中进行的axios请求处理 在vue文件中进行pinia中数据的导入,继续进…...

tobias实现支付宝支付

tobias是一个为支付宝支付SDK做的Flutter插件。 如何使用 你需要在pubspec.yaml中配置url_scheme。url_scheme是一个独特的字符串&#xff0c;用来重新启动你的app&#xff0c;但是请注意字符串“_”是不合法的。 在iOS端&#xff0c;你还需要配置并传入一个universal link。…...

【音视频 | RTSP】RTSP协议详解 及 抓包例子解析(详细而不赘述)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

SQL Server 2022 中的 Tempdb 性能改进非常显著

无论是在我的会话中还是在我写的博客中&#xff0c;Tempdb 始终是我的话题。然而&#xff0c;当谈到 SQL Server 2022 中引入的重大性能变化时&#xff0c;我从未如此兴奋过。他们解决了我们最大的性能瓶颈之一&#xff0c;即系统页面闩锁并发。 在 SQL Server 2019 中&#x…...

C++ Lambda表达式第二篇, Lambda表达式

C Lambda表达式 Lambda 捕获含有模板参数的Lambda表达式无模板参数的Lambda表达式 Lambda 捕获 captures是零个或多个捕获的逗号分隔列表&#xff0c;可以选择以capture-default开头。捕获列表定义可从 lambda 函数体内访问的外部变量。唯一的捕获默认值是 &&#xff0c;…...

Linux系统的介绍和常用命令

文章目录 介绍常用命令文件和目录操作文件内容操作系统管理命令网络命令 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;Liunx系统 ✨文章内容&#xff1a;Liunx系统介绍 &…...

IDEA安装IDE Eval Reset插件,30天自动续期,无限激活

第一步&#xff1a; 下载idea 注意&#xff1a;版本要是2021.2.2以下 第二步&#xff1a;快捷键CtrlAlts打开设置 第三步&#xff1a;打开下图中蓝色按钮 第四步&#xff1a;点击弹窗的 “” &#xff0c;并输入 plugins.zhile.io 点击 “ok” 第五步&#xff1a;搜索IDE Ea…...

【C++】初步认识C++

1. 初识C1.1 C概念相关1.2 C发展史及其重要性1.2.1 发展史1.2.2 重要性 2. C关键字3. 命名空间4. 输入和输出 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;【C学习】 1. 初识C 1.1 C概念相关 C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。 【来源】…...

【Python数据分析与可视化】:使用【Matplotlib】实现销售数据的全面分析 ——【Matplotlib】数模学习

目录 安装Matplotlib 1.打开PyCharm&#xff1a; 2.打开终端&#xff1a; 3.安装Matplotlib&#xff1a; 4.确认安装&#xff1a; 导入Matplotlib 创建简单的折线图 代码解析&#xff1a; 创建子图 代码解析&#xff1a; 创建柱状图 代码解析&#xff1a; 创建散点…...

Docker加速器配置指南:提升镜像下载速度的秘诀 加速安装Mysql Redis ES

在安装 Docker 镜像时&#xff0c;由于官方镜像下载速度较慢&#xff0c;我们可以使用阿里云的镜像加速器来提升下载速度。 使用阿里云镜像加速器 首先&#xff0c;找到并配置阿里云的镜像加速器。安装教程如下&#xff1a; 登录阿里云&#xff0c;进入容器镜像服务。直达链…...

32单片机,C语言与汇编联合编译的几种方式

适用编译器&#xff1a;Keil5 方式一&#xff1a; 单独创建一个.s汇编文件&#xff0c;在汇编文件内对函数进行EXPORT声明 r0寄存器是函数传入的第一个参数&#xff0c;r1寄存器是函数传入的第二个参数&#xff0c;以次类推。参数最多不确定是到r4为止&#xff0c;还是到r12…...

基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM

基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行程序。 2.所有程序都经过验证&#xff0c;保证程序可以运行。 3.具有良好的编程习惯&#xff0c;程序均包含简要注释。 获取方式 https:/…...

自动控制:反馈控制

自动控制&#xff1a;反馈控制 反馈控制&#xff08;Feedback Control&#xff09;是一种在控制系统中通过测量输出信号&#xff0c;并将其与期望信号进行比较&#xff0c;产生误差信号&#xff0c;再根据误差信号调整输入来达到控制目标的方法。反馈控制是自动控制系统中最常…...

sqlite 数据库 介绍

文章目录 前言一、什么是 SQLite &#xff1f;二、语法三、SQLite 场景四、磁盘文件 前言 下载 目前已经出到了&#xff0c; Version 3.46.0 SQLite&#xff0c;是一款轻型的数据库&#xff0c;是遵守ACID的关系型数据库管理系统&#xff0c;它包含在一个相对小的C库中。它是…...

【机器学习】机器学习重塑广告营销:精准触达,高效转化的未来之路

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f4d2;1. 引言&#x1f4d9;2. 机器学习基础与广告营销的结合&#x1f9e9;机器学习在广告营销中的核心应用领域&#x1f339;用…...

常见的Java运行时异常

常见的Java运行时异常 1、ArithmeticException&#xff08;算术异常&#xff09;2、ClassCastException &#xff08;类转换异常&#xff09;3、IllegalArgumentException &#xff08;非法参数异常&#xff09;4、IndexOutOfBoundsException &#xff08;下标越界异常&#xf…...

CANoe的capl调用Qt制作的dll

闲谈 因为Qt封装了很多个人感觉很好用的库&#xff0c;所以一直想通过CAPL去调用Qt实现一些功能&#xff0c;但是一直没机会&#xff08;网络上也没看到这方面的教程&#xff09;&#xff0c;这次自己用了两天&#xff0c;踩了很多坑&#xff0c;终于是做成了一个初步的调用方…...

论如何搭建属于自己的服务器?

在现如今的数字化时代中&#xff0c;为了能够搭建网站和运行应用程序&#xff0c;很多人选择搭建属于自己的服务器&#xff0c;下面我们就来了解一下如何搭建服务器吧&#xff01; 搭建服务器我们首先需要选择适合自身需求的硬件设备&#xff0c;其中包含内存、CPU和存储等配置…...

【C++ OpenCV】机器视觉-二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算

原图 结果图 //包含头文件 #include <opencv2/opencv.hpp>//命名空间 using namespace cv; using namespace std;//全局函数声明部分//我的腐蚀运算 Mat Erode(Mat src, Mat Mask, uint32_t x0, uint32_t y0) {uint32_t x 0, y 0;Mat dst(src.rows, src.cols, CV_8U…...

STMF4学习笔记RTC(天空星)

前言&#xff1a;本篇笔记参考嘉立创文档&#xff0c;连接放在最后 #RTC相关概念定义 Real-Time Clock 缩写 RTC 翻译 实时时钟&#xff0c;是单片机片内外设的一种&#xff0c;作用于提供准确的时间还有日期&#xff0c;这个外设有独立的电源&#xff0c;当单片机停止供电…...

vue数组变化的侦测***

数组变化的侦测 变更方法 vue能够侦听响应式数组的变更方法&#xff0c;并在他们被调用时触发相关更新。这些变更方法包括&#xff1a; push()pop()shift()unshift()splice()sort()reverse() 替换一个数组 变更方法&#xff0c;顾名思义&#xff0c;就是会对调用他们的原数组进…...

k8s-第十节-Ingress

Ingress 介绍 Ingress 为外部访问集群提供了一个 统一 入口&#xff0c;避免了对外暴露集群端口&#xff1b;功能类似 Nginx&#xff0c;可以根据域名、路径把请求转发到不同的 Service。可以配置 https 跟 LoadBalancer 有什么区别&#xff1f; LoadBalancer 需要对外暴露…...

webrtc gcc详解

webrtc的gcc算法(Google Congestion Control)&#xff0c;貌似国内很多文章都没有细讲&#xff0c;原理是怎么样的&#xff0c;具体怎么进行计算的。这里详解一下gcc。 gcc算法&#xff0c;主要涉及到&#xff1a; 拥塞控制的关键信息和公式 卡曼滤波算法 gcc如何使用卡曼滤…...

Linux多进程和多线程(七)进程间通信-信号量

进程间通信之信号量 资源竞争 多个进程竞争同一资源时&#xff0c;会发生资源竞争。 资源竞争会导致进程的执行出现不可预测的结果。 临界资源 不允许同时有多个进程访问的资源, 包括硬件资源 (CPU、内存、存储器以及其他外 围设备) 与软件资源(共享代码段、共享数据结构) …...

【项目日记(一)】梦幻笔耕-数据层实现

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言2.后端模块3数据库设计4.mapper实现4.1UserInfoMapper4.2BlogMapper 5.总结 1.…...

ElementUI的中国省市区级联数据插件element-china-area-data

安装 npm install element-china-area-data -S import 使用 import {provinceAndCityData,pcTextArr,regionData,pcaTextArr,codeToText, } from "element-china-area-data"; provinceAndCityData省市二级联动数据,汉字+coderegionData省市区三级联动数据pcTextAr…...

Kotlin算法:把一个整数向上取值为最接近的2的幂指数值

Kotlin算法&#xff1a;把一个整数向上取值为最接近的2的幂指数值 import kotlin.math.ln import kotlin.math.powfun main(args: Array<String>) {val number intArrayOf(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)number.forEach {println("$…...

简单且循序渐进地查找软件中Bug的实用方法

“Bug”这个词常常让许多开发者感到头疼。即使是经验丰富、技术娴熟的开发人员在开发过程中也难以避免遭遇到 Bug。 软件中的故障会让程序员感到挫败。我相信在你的软件开发生涯中&#xff0c;也曾遇到过一些难以排查的问题。软件中的错误可能会导致项目无法按时交付。因此&…...

基于springboot+vue+uniapp的高校宿舍信息管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…...

(完整音频)DockerHub、OpenAI、GitCode,脱钩时代,我们该如何自处?

本期主播 朱峰&#xff1a;「津津乐道播客网络」创始人&#xff0c;产品及技术专家。&#xff08;微博&#xff1a;zhufengme&#xff09;高春辉&#xff1a;「科技乱炖」主播。“中国互联网站长第一人”&#xff0c;科技、互联网领域的连续创业者。&#xff08;微博&#xff1…...

macos 10.15系统下载包,macOS Catalina for mac

macOS Catalina 让你喜欢的种种 Mac 体验都更进一步。你可以领略音乐、播客这两款全新 Mac app 的表演&#xff1b;在 Mac 上畅享各款自己心爱的 iPad app&#xff1b;拿起 iPad 和 Apple Pencil&#xff0c;拓展工作空间&#xff0c;释放创意灵感&#xff1b;再打开那些平时常…...

uni.showShareMenu({}) 和 uni.showShareImageMenu({}) 的区别

ChatGPT uni.showShareMenu({}) 和 uni.showShareImageMenu({}) 是 Uni-app 中两个不同的 API&#xff0c;它们的作用和用法有所不同&#xff1a; uni.showShareMenu({}) 作用&#xff1a;用于显示当前页面的分享菜单&#xff0c;通常显示在页面的右上角&#xff08;类似于微…...

Spring Boot logback 日志文件配置

引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency>logback-spring.xml 配置 <?xml version"1.0" encoding"UTF-8&quo…...

240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT 对话情绪识别

240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT对话情绪识别 近期确实太忙&#xff0c;此处仅作简单记录&#xff1a; 模型简介 BERT全称是来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c…...

图像处理调试软件推荐

对于图像处理的调试&#xff0c;使用具有图形用户界面&#xff08;GUI&#xff09;且支持实时调整和预览的图像处理软件&#xff0c;可以大大提高工作效率。以下是几款常用且功能强大的图像处理调试软件推荐&#xff1a; ImageJ/FijiMATLABOpenCV with GUI LibrariesNI Vision …...

Mybatis实现RBAC权限模型查询

RBAC权限模型 Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过将权限分配给➡角色&#xff0c;再将角色分配给➡用…...

最短路算法——差分约束

差分约束 (1) 求不等式组的可行解 源点&#xff1a;从源点出发&#xff0c;一定可以走到所有的边求可行解步骤&#xff1a; 先将每个不等式 x i ≤ x j c x_i \le x_j c xi​≤xj​c,转化成一条从 s j s_j sj​走到 s i s_i si​&#xff0c;长度为 c k c_k ck​ 的一条边找…...

Log4j日志框架讲解(全面,详细)

目录 Log4j概述 log4j的架构&#xff08;组成&#xff09; Loggers Appenders Layouts 快速入门 依赖 java代码 日志的级别 log4j.properties 自定义Logger 总结&#xff1a; Log4j概述 Log4j是Apache下的一款开源的日志框架&#xff0c;通过在项目中使用 Log4J&…...

LeetCode 35, 242, 994

目录 35. 搜索插入位置题目链接标签思路代码 242. 有效的字母异位词题目链接标签思路代码 994. 腐烂的橘子题目链接标签思路代码 35. 搜索插入位置 题目链接 35. 搜索插入位置 标签 数组 二分查找 思路 本题与 704. 二分查找 十分相似&#xff0c;只不过本题在找不到 tar…...

ctfshow-web入门-文件包含(web87)巧用 php://filter 流绕过死亡函数的三种方法

目录 方法1&#xff1a;php://filter 流的 base64-decode 方法 方法2&#xff1a;通过 rot13 编码实现绕过 方法3&#xff1a;通过 strip_tags 函数去除 XML 标签 除了替换&#xff0c;新增 file_put_contents 函数&#xff0c;将会往 $file 里写入 <?php die(大佬别秀了…...

adb shell ps -T打印出来参数的含义,以及D,T,Z代表的状态含义是什么?

在Android系统中&#xff0c;使用adb shell ps命令可以查看当前系统中运行的进程信息。当你添加-T选项时&#xff08;注意&#xff0c;标准的ps命令在Android的adb shell中可能不直接支持-T选项&#xff0c;这通常与Linux中的ps命令略有不同&#xff09;&#xff0c;你可能是想…...

leetcode77组合——经典回溯算法

本文主要讲解组合的要点与细节&#xff0c;以及回溯算法的解题步骤&#xff0c;按照步骤思考更方便理解 c和java代码如下&#xff0c;末尾 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 具体要点&#xff1a; …...

springcloud-alibba之FeignClient

代码地址&#xff1a;springcloud系列: springcloud 组件分析拆解 1.FeignClient的集成 springboot版本&#xff1a;3.1.5 springcloud组件版本&#xff1a;2022.0.4 nacos客户端的版本&#xff1a;2.3.2 1.引pom 这里引入了nacos和feginclient的版本 <dependency>…...

三、docker配置阿里云镜像仓库并配置docker代理

一、配置阿里云镜像仓库 1. 登录阿里云官网&#xff0c;并登录 https://www.aliyun.com/ 2. 点击产品 - 容器 - 容器与镜像服务ACR - 管理控制台 - 镜像工具 - 镜像加速器 二、配置docker代理 #1. 创建docker相关的systemd文件 mkdir -p /etc/systemd/system/docker.servic…...

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十一)-git(3)

Git是目前最流行的版本控制系统之一&#xff0c;在现代软件开发中扮演着重要的角色。它能够有效地跟踪文件变化、协作开发&#xff0c;并存储项目的历史记录。本文的目的是向读者介绍Git的基本概念和工作原理&#xff0c;帮助初学者快速上手使用Git&#xff0c;并帮助有经验的开…...

全面解析 TypeScript 泛型的二三事

2024年了相信大家都已经在日常开发的过程中使用上了 TypeScript 了。TypeScript 增强了代码可靠性和可维护性&#xff0c;确保减少运行时错误并提高开发人员的工作效率。 TypeScript 通过类型声明 使得 javascript 拥有了强类型校验。而泛型的是类型声明中最重要的一环&#x…...

单/多线程--协程--异步爬虫

免责声明:本文仅做技术交流与学习... 目录 了解进程和线程 单个线程(主线程)在执行 多线程 线程池 协程(爬虫多用) 假异步:(同步) 真异步: 爬虫代码模版 异步-爬虫 同步效果--19秒 异步效果--7秒 了解进程和线程 ​ # --------------------> # ------> # …...

android pdf框架-11,查看图片

前10篇文章,9章关于pdf的,pdf解析后,里面也是有各种图片,于是利用pdf的view来展示图片,似乎也是个不错的想法. android手机中的图片查看功能,有的可以展示,有的不能.比如华为,荣耀对大体积的png是可以显示的,小米是不显示,只有缩略图. 一张png50m大,比如清明上河图,原图是tif…...

【CSS】深入浅出弹性布局

CSS的弹性布局&#xff08;Flexbox&#xff09;是一种用于在容器中沿着一维方向&#xff08;水平或垂直&#xff09;来布局、对齐和分配容器内项目空间的有效方式。它旨在提供一个更加有效的方式来布局、对齐和分配容器中项目的空间&#xff0c;即使它们的大小未知或是动态变化…...