Data Science Introduction Big Homework: Question C of the National Mathematical Competition (Classificação de Relíquias de Vidro Antigas)

        Originalmente era apenas uma grande lição de casa na fase de aprendizado, mas afinal, eu procurei e estudei muito por vários dias. Sinto muito pelos frutos do meu trabalho se não deixar alguns registros neste mundo (não). Então Eu criei este artigo. A propósito, é um dever de casa. Escreva um relatório.

940131

Índice

1. Reformulação do problema

Questão C do Concurso Nacional de Matemática Graduação em Modelagem Taça Sociedade do Ensino Superior 2022

【1】Fundo do Projeto

【2】Reapresentação do problema: Análise da composição e identificação de produtos de vidro antigos

Dois: breve descrição

Três: registro do processo

1. Pré-processamento de dados

2. Notas de conclusão para quatro pequenas perguntas

primeira pergunta

segunda questão

terceira pergunta

quarta pergunta

Quatro: Inadequações e análises a serem melhoradas

Cinco: recursos de código e conjunto de dados


1. Reformulação do problema

Questão C do Concurso Nacional de Matemática Graduação em Modelagem Taça Sociedade do Ensino Superior 2022

【1】Plano de fundo do projeto

Concurso Nacional de Matemática de Graduação 2022 em Apresentação de Documentos de Modelagem - Estudantes Universitários Chineses Online

【2】Reafirmação do problema: análise composicional e identificação de produtos de vidro antigos 

A Rota da Seda foi um canal para trocas culturais entre a China e o Ocidente nos tempos antigos, entre os quais o vidro era uma evidência valiosa das primeiras trocas comerciais. É feito de materiais locais, por isso é semelhante em aparência aos produtos de vidro estrangeiros, mas a composição química não é a mesma.

A principal matéria-prima do vidro é a areia de quartzo, e sua principal composição química é o dióxido de silício (SiO2). Devido ao alto ponto de fusão da areia de quartzo pura, para diminuir a temperatura de fusão, fluxos precisam ser adicionados durante o refino. Comumente Os fluxos usados ​​nos tempos antigos incluem cinzas vegetais, natrão natural, salitre e minério de chumbo, etc., e o calcário é adicionado como estabilizador, e o calcário é convertido em óxido de cálcio (CaO) após a calcinação. O fluxo adicionado é diferente e sua composição química principal também é diferente. Por exemplo, vidro de chumbo-bário no processo de queima Minério de chumbo é adicionado ao vidro como um fluxo, e seu teor de óxido de chumbo (PbO) e óxido de bário (BaO) é relativamente alto. geralmente considerado uma variedade de vidro inventada pela China. O vidro da cultura Chu é principalmente vidro de chumbo-bário. Vidro de potássio É feito queimando substâncias com alto teor de potássio, como cinzas de plantas como fundente, e é popular principalmente em Lingnan de China, Sudeste Asiático e Índia.

O vidro antigo é extremamente suscetível ao desgaste devido à influência do ambiente de enterro. Durante o processo de desgaste, um grande número de elementos internos troca com elementos ambientais, resultando em alterações em sua proporção de composição, o que afeta o julgamento correto de sua categoria. relíquias culturais na Figura 1 são marcadas como superfície Sem intemperismo, a cor e o padrão das relíquias culturais podem ser claramente vistos na superfície, mas não descarta o intemperismo local da luz; as relíquias culturais na Figura 2 são marcadas como intemperismo superficial, e a grande área amarelo-acinzentada na superfície é o regolito, que é a área obviamente desgastada, e a parte roxa é uma superfície geral desgastada.Em relíquias culturais parcialmente desgastadas, também existem áreas não alteradas na superfície.

Há um lote de dados relacionados a produtos de vidro antigos em meu país. Os arqueólogos classificaram essas relíquias culturais em dois tipos: vidro com alto teor de potássio e vidro de chumbo-bário de acordo com sua composição química e outros métodos de detecção. A Tabela 1 do anexo fornece os dados dessas relíquias culturais. Para informações de classificação, a Tabela 2 no apêndice fornece a proporção dos componentes principais correspondentes (o espaço em branco indica que o componente não foi detectado). Métodos e outros motivos podem levar ao acúmulo de sua proporção de componentes e a situação que não é 100% Nesta questão, os dados da razão de componentes cumulativos entre 85% e 105% são considerados dados válidos. 

Realize análises e modelagem com base nos dados relevantes no anexo para resolver os seguintes problemas:

A Questão 1  analisa a relação entre o desgaste superficial dessas relíquias culturais de vidro e seu tipo de vidro, decoração e cor; combinado com o tipo de vidro, analisa a lei estatística de se há desgaste na superfície das amostras de relíquias culturais e prevê o intemperismo de acordo com os dados de detecção do conteúdo químico anterior do ponto de intemperismo.

Questão 2  Analisar as regras de classificação de vidro de alto potássio e vidro de chumbo-bário com base nos dados anexos; selecionar a composição química apropriada para cada categoria para dividi-la em subcategorias, fornecer o método de divisão específico e os resultados da divisão e avaliar a racionalidade de os resultados da classificação e análise de sensibilidade.

A Questão 3  analisa a composição química de relíquias culturais de vidro desconhecidas no Anexo Formulário 3, identifica seu tipo e analisa a sensibilidade dos resultados da classificação.

A questão 4  é analisar a relação entre a composição química de diferentes categorias de amostras de relíquias culturais de vidro e comparar as diferenças na relação entre a composição química de diferentes categorias.

Dois: breve descrição

        Neste tópico, o autor conduz uma discussão aprofundada sobre a relação entre a decoração, cor, tipo, composição química, etc. de amostras antigas de relíquias culturais de vidro. Para o conjunto de dados fornecido, primeiro use o método de exclusão de valores inválidos ​e preenchimento de variáveis ​​dummy Em seguida, o conjunto de dados foi dividido, classificado e processado. Considerando que a segunda pergunta usará as informações dos dois formulários ao mesmo tempo, as informações do formulário 1 e do formulário 2 são combinadas. E realizar uma boa codificação. Considerando a necessidade de discutir os quatro estados diferentes do vidro posteriormente, o conjunto de dados é dividido. É claro que nem todo o processamento do conjunto de dados é feito no início. Parte do trabalho de processamento de dados é Quando necessário, é processado antes da modelagem.

        Em termos de modelagem, o autor usa extensivamente o coeficiente de correlação de Spearman para estabelecer várias matrizes de coeficientes de correlação e desenha um mapa de calor para observar a relação entre o desgaste superficial dessas relíquias culturais de vidro e seu tipo de vidro, decoração, cor e composição química. Ao estabelecer um modelo de classificação com uma árvore de decisão e analisar as leis estatísticas do conteúdo da composição química de amostras de relíquias culturais, adotamos o método de estatística descritiva, usando estatísticas descritivas como média, curtose e assimetria para descrever a composição química do vidro , e analisou. Visualização, conveniente para comparação e pesquisa. Estabeleça um modelo de regressão de crista ao combinar gráficos, para explorar quantitativamente a relação e prever a composição química antes do intemperismo. Ao realizar a análise de subcategoria, o autor usa PCA+KMeans+decisão pontuação de árvore mais previsão Um método misto é usado para garantir a operacionalidade do processo e a confiabilidade e intuição dos resultados. Ao discutir a relação de correlação, o método de coeficiente de correlação + mapa de calor também é usado para observar a relação com a comparação horizontal dados.

Palavras-chave: Coeficiente de correlação de Spearman, mapa de calor, árvore de decisão, estatística descritiva, análise de componentes principais, agrupamento de KMeans

Três: registro do processo

        Todos os códigos e conjuntos de dados necessários serão conectados a um disco de nuvem empacotado no final do artigo.

1. Pré-processamento de dados

        Conforme mencionado no título, a composição química na composição química (Forma 2) é composicional. Os dados que não estão dentro do intervalo especificado são dados inválidos. Basta usar o Excel para obter uma soma e filtrar os dados que não estão dentro do intervalo de 80-105 Basta excluí-lo diretamente.

        15 e 17 no Formulário 2 são dados inválidos, exclua-os diretamente√

        Olhando para a lista de composição química novamente, descobri que há muitos valores vagos nela. De acordo com o título, esses componentes vagos não podem ser detectados ou não contêm a composição química. Alguns dos documentos modelo no site oficial preencheu esses componentes vagos, o objetivo é concluir Porque o instrumento limita os vestígios de componentes químicos que não foram detectados. O autor não decide fazer isso. A razão é que a detecção de componentes químicos de relíquias culturais é um experimento, e os dados devem refletir totalmente os resultados reais do experimento. Se não for detectado, não é detectado. O algoritmo para preencher os dados da lacuna não é um método que respeita os fatos. Portanto, o autor preenche 0 para todos os componentes químicos da lacuna.

        Olhando para o Formulário 1, você pode descobrir que o item de cor tem quatro valores vagos.A ideia inicial é usar a floresta aleatória no sklearn para preencher o modelo.

No entanto, após a construção do modelo com random forest, verifica-se que ainda existem dois valores faltantes que não podem ser preenchidos pelo modelo. Portanto, há motivos para duvidar da racionalidade do preenchimento do modelo. Após observar o conjunto de dados, é descobriu-se que o estado de desgaste de todos os itens com cores ausentes é "desbotamento". De acordo com os resultados acima, é razoável supor que o desgaste de relíquias culturais é tão grave que a cor não pode ser reconhecida. Portanto, preencha o campo " item irreconhecível" para a cor ausente.

        O fracasso dos esforços de preenchimento do modelo aqui confirmou mais uma vez a irracionalidade do preenchimento do algoritmo para dados experimentais (conjuntos de dados cujas fontes de dados são objetivas e confiáveis, e a frequência de erros descuidados é pequena).

        Para os dados do componente no Formulário 2 e no Formulário 3, a soma cumulativa deve ser 100%. No entanto, devido à limitação dos métodos de detecção, os componentes nos dados válidos não são 100%. Portanto, use a conversão proporcional para converter todos os componentes dados em uma soma fixa. 100% dos dados. O método específico é acumular os dados de cada linha e dividir os dados de cada coluna da linha pela soma cumulativa das linhas.

2. Notas de conclusão para quatro pequenas perguntas

primeira pergunta

No total, dividi-o em três pequenas partes:

(1) Analisar a relação entre o desgaste superficial dessas relíquias culturais de vidro e seu tipo de vidro, decoração e cor e estabelecer um modelo de classificação

(2) Combinado com o tipo de vidro, analise as leis estatísticas de se existem componentes químicos intemperizados na superfície de amostras de relíquias culturais

(3) E de acordo com os dados de detecção do ponto de intemperismo, preveja o conteúdo da composição química antes do intemperismo

        Para a primeira e segunda questões, o conjunto de dados usado pelo autor é o Formulário 1 e o Formulário 1 e o Formulário 2 mesclados. Porque é necessário combinar o tipo de Formulário 1 e a composição química do Formulário 2 para modelar juntos.

Primeira perguntinha

        O Formulário 1 contém as informações gerais de todas as relíquias culturais, incluindo decoração, cor, categoria de vidro e se a superfície está desgastada. Algumas das relíquias culturais listadas nele não estão no Formulário 2. Portanto, a relíquia cultural no Formulário 1 é excluída no o conjunto de dados mesclados. Ao mesmo tempo, há vários pontos de amostragem de algumas relíquias culturais únicas no Formulário 2, e a operação de cópia de linha é executada ao copiar o Formulário 1. Para intemperismo, 0 é usado para substituir não intemperizado, 1 é usado para substituir intemperismo e 2 é usado para substituir intemperismo severo.

        Em seguida, usamos o coeficiente de correlação de Spearman como padrão para desenhar um mapa de calor da correlação entre todas as variáveis ​​e nos referimos à tabela de teste de hipótese (n = 60, nível de significância 0,05) para determinar se não há 95% de confiança no calor mapa que as duas variáveis ​​estão relacionadas A grade está coberta de branco. O objetivo de desenhar esta figura é observar inicialmente a correlação entre as variáveis ​​na Forma 1. Como a matriz de adjacência é simétrica, basta observar o triângulo inferior.

Valor crítico do teste de hipótese do coeficiente de correlação

        O mapa de calor correspondente é mostrado abaixo. O coeficiente de correlação da área branca ausente não atende ao nível de confiança de 95%, portanto, não será exibido

Pode-se observar pela figura que:

1. Decoração A: Existe uma forte correlação negativa com a decoração C e uma fraca correlação negativa com o verde escuro

2. Decoração B: Existe uma correlação negativa com a decoração C, uma correlação negativa com vidro de chumbo-bário, uma correlação negativa fraca com nenhum intemperismo, uma correlação positiva com vidro de alto potássio, uma correlação positiva com azul esverdeado e uma correlação correlação positiva fraca com intemperismo

3. Decoração C: Existe uma correlação negativa com o verde-azulado e uma correlação positiva com o verde-escuro.

4. Tipo de chumbo-bário: mais facilmente desgastado

5. Tipo de alto potássio: não é fácil de resistir

6. Azul claro: correlacionado negativamente com azul esverdeado

         Após observar inicialmente o coeficiente de correlação, iniciamos a modelagem. O autor escolheu uma árvore de decisão para classificar os dados. Antes de construir a árvore de decisão, para evitar o overfitting, além da poda que acompanha o algoritmo, também é necessário limitar a árvore de decisão. Profundidade. Combinado com o tamanho do conjunto de dados, pesquisamos em grade as possíveis profundidades da árvore de decisão [1,16). A pesquisa em grade e a validação cruzada foram realizadas usando GridSearchCV

        A conclusão da pesquisa da grade é que quando a profundidade da árvore de decisão é 2, a taxa de precisão da validação cruzada é maior, que é 0,7030. Selecione a profundidade da árvore de decisão 2 para construir uma árvore de decisão. Após treinar o modelo, de sklearn.tree import plot_tree para visualizar a árvore de decisão, e os resultados da visualização são os seguintes:

Após várias execuções, o ramo direito da árvore de decisão será alterado. As alterações são mostradas na figura:

        Pode ser visto no diagrama de árvore que o ramo à direita não distingue claramente a condição de intemperismo. A condição de cor adicional pode distinguir apenas uma amostra no máximo. Isso também está de acordo com a análise do mapa de calor. O tipo de vidro é mais sensível ao intemperismo ou não. Óbvio. Vale a pena notar que a decoração B está completamente desgastada no vidro de alto potássio. Também não podemos rejeitar a relação entre a decoração B e o intemperismo no diagrama de calor.

        Resumindo, acreditamos que o intemperismo está principalmente relacionado ao tipo de vidro. O vidro de chumbo-bário tem maior probabilidade de sofrer intemperismo, e o padrão B no vidro com alto teor de potássio tem maior probabilidade de sofrer intemperismo. Intemperismo ou não, não é relacionado à cor. , intemperismo ou não não tem relação significativa com a ornamentação.

A primeira pequena pergunta (Python) todos os códigos:

import numpy as np
import pandas as pd
from sklearn.model_selection import GridSearchCV # 通过网格方式来搜索参数
from sklearn import tree
from matplotlib import pyplot as plt
import matplotlib
font = {#中文绘图
    'family':'SimHei',
    'weight':'bold',
    'size':12
}
matplotlib.rc("font", **font)
import seaborn as sns

data = pd.read_csv("表单1.csv")#导入数据集
features = ["文物编号","纹饰","类型","颜色"]
X = data[features]#设置待估Xy
y = data["表面风化"]
X.set_index("文物编号",inplace=True)#更改索引
features = ["纹饰","类型","颜色"]

plt.figure(figsize=[15, 10])#生成热力图,初步观察变量相关情况
sns.heatmap(pd.get_dummies(data[["纹饰","类型","颜色","表面风化"]]).corr(method='spearman'),cmap="Greens",mask=abs(pd.get_dummies(data[["纹饰","类型","颜色","表面风化"]]).corr(method='spearman').corr(method='spearman'))<0.279, linewidths=0.5, annot=True)
plt.show()

X = pd.get_dummies(X[features])#onehot

# 设置需要搜索的参数值,在这里寻找最优的决策树深度
parameters = {'max_depth':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]}
model = tree.DecisionTreeClassifier()  # 注意:在这里不用指定参数
# GridSearchCV
clf = GridSearchCV(model, parameters, cv=5)   
clf.fit(X, y)
# 输出最好的参数以及对应的准确率
print ("best score is: %.4f"%clf.best_score_, "  best param: ",clf.best_params_,)

model = tree.DecisionTreeClassifier(max_depth=2)
model = model.fit(X, y)

fig = plt.figure(figsize=(10,10))
class_names = ["无风化","风化"]
from sklearn.tree import plot_tree # 树图
plot_tree(
    model, 
    feature_names = X.columns,  
    class_names= class_names,
    filled=True,
)

segunda questão

(2) Combinado com o tipo de vidro, analise as leis estatísticas de se existem componentes químicos intemperizados na superfície de amostras de relíquias culturais

        Aqui eu ainda escolho usar o mapa de calor para fazer uma observação preliminar.O processo é o mesmo da primeira pequena pergunta.

        Uma correlação clara pode ser encontrada na figura. Um valor positivo representa uma correlação positiva e um valor negativo representa uma correlação negativa. Quanto mais próximo o valor absoluto estiver de 1, mais próximo de uma correlação linear. Quanto mais próximo de 0, menor o relacionamento.

        Como esta pergunta é sobre leis estatísticas, usamos o Excel para análise estatística descritiva. A pergunta requer análise em combinação com tipos de vidro, então dividimos os dados em quatro grupos: intemperismo de alto potássio, não intemperismo de alto potássio, intemperismo de chumbo-bário, intemperismo de chumbo-bário Sem intemperismo. Aqui, o autor apenas conduz a análise de texto sobre as estatísticas descritivas de relíquias culturais de vidro envelhecido com alto teor de potássio. O restante das estatísticas descritivas e gráficos referem-se a documentos:

<Arquivo a ser carregado: estatísticas descritivas da composição química em quatro grupos.xlsx>

        A figura acima mostra o conjunto de dados de vidro intemperizado com alto teor de potássio e suas estatísticas descritivas. Entre eles, as estatísticas de 0 são causadas pela falta de composição química. Algumas estatísticas incomuns são usadas: coeficiente de assimetria e coeficiente de curtose . Link de referência especificamente descritivo  , realizamos estatísticas descritivas diretamente:

        Do ponto de vista médio, o SiO2 tem sem dúvida a maior proporção no vidro, e é o principal componente de todos os vidros.A proporção de todos os outros componentes vestigiais é inferior a 2%.

        Do ponto de vista do coeficiente de curtose, o coeficiente de curtose dos quatro componentes de sílica, óxido de potássio, óxido de magnésio e óxido férrico é negativo, indicando que a distribuição desses quatro componentes é mais suave do que a distribuição normal, e há picos relativamente grandes em ambos os lados. Existem muitos valores discretos. Os coeficientes de curtose dos componentes restantes são positivos, indicando que sua distribuição é mais íngreme do que a distribuição normal, as "caudas" em ambos os lados são mais finas e a distribuição é mais concentrada.

        Do ponto de vista do coeficiente de assimetria, a sílica, o óxido de cálcio, o óxido de magnésio, o óxido de alumínio e o óxido de cobre são assimétricos positivos, indicando que há uma longa cauda direita na distribuição dos componentes, e pode haver um grande valor que é longe do valor médio dos componentes químicos correspondentes Componentes Os demais componentes estão distribuídos à esquerda, refletindo que pode haver componentes químicos que estão mais distantes do valor médio dos componentes químicos correspondentes.

        Em seguida, visualize os componentes do vidro com alto teor de potássio. De acordo com o coeficiente de correlação, a sílica é perdida com o intemperismo. No entanto, a proporção de sílica aumenta após o intemperismo, indicando que os componentes residuais têm maior probabilidade de serem perdidos.

        Considerando a grande proporção de sílica, a sílica foi removida da análise de componentes vestigiais.

        

        Para a análise de oligoelementos, verifica-se que alguns oligoelementos desaparecem do gráfico antes e depois do intemperismo. São eles o óxido de potássio e o óxido de magnésio. De acordo com o coeficiente de correlação, eles podem ser completamente perdidos durante o processo de intemperismo. Combinando coeficiente de curtose e correlação a análise de coeficiente pode adivinhar intemperismo O processo faz com que a distribuição de componentes perdidos com intemperismo se torne extrema. E componentes como óxido de cobre e óxido de alumínio podem não ser facilmente perdidos, especialmente o óxido de alumínio pode ter um efeito anti-intemperismo. Portanto, a proporção torna-se maior .

        A propósito, ao resolver o terceiro subproblema, use o modelo de regressão de crista do terceiro subproblema para explorar experimentalmente a relação quantitativa entre o grau de intemperismo, o tipo de vidro e a composição química. No modelo linear, o sinal negativo indica que a variável independente tem contribuição negativa, um sinal positivo indica uma contribuição positiva para a variável independente e a matriz de coeficientes é a seguinte:

1. Potássio elevado, bário de chumbo e grau de intemperismo são variáveis ​​dependentes, sendo a proporção de cada composição química uma variável independente.

                            Interceptação de regressão
(alto potássio) rich_k 0,6396314
(chumbo bário) PbBa 0,3603686
(intemperismo) intemperismo 0,4576642

              高钾 铅钡 风化程度
SiO2 0.04857851 -0.04857851 -0.02583662
Na2O -3.66590529 3.66590529 -5.57513205
K2O 3.97230658 -3.97230658 -1.60494187
CaO 0.00000000 0.00000000 0.00000000
MgO -0.73045301 0.73045301 -1.92845812
Al2O3 -1.91151436 1.91151436 -1.82996762
Fe2O3 -0.10065749 0.10065749 -6.48401062
CuO 1.18870830 -1.18870830 Sr O 0,00000000
0,00000000
0,00000000 SnO2 0,00000000 0,00000000 0,00000000 SO2 0,74433109 -0,74433109
6,83425779


        A partir desta matriz, pode-se ver como o modelo linear pode separar vidros de alto potássio e chumbo-bário, e pode mostrar a contribuição de cada composição química para o grau de intemperismo.A matriz e o diagrama termodinâmico de coeficientes de correlação são verificados mutuamente.

2. Cada componente do vidro com alto teor de potássio é usado como uma variável independente e o grau de intemperismo é usado como uma variável dependente:

Interceptação de regressão 
0,3591105 


              Grau de intemperismo
SiO2 0,5155128
Na2O -1,7055526 K2O
-1,5235123 CaO -1,6537503
MgO -5,6838663
Al2O3 -1,8538162
Fe2O3 -1,0543517
CuO
-0,5243118
PbO -6,33719 61
Ba O -3,1674837
P2O5 -2,3377587
SrO -24,2124372
SnO2 -8,6608621
SO2 -18,8954178

3. Cada componente do vidro de chumbo-bário é usado como uma variável independente e o grau de intemperismo é usado como uma variável dependente:

    Interceptação de regressão
     0,5840007 

      grau de intemperismo
SiO2 -1,3158729
Na2O -1,8380630 K2O -16,6983000
CaO
-6,9069850
MgO 5,1302300
Al2O3 2,0967995
Fe2O3 -4,1001075
CuO 0,36352 41 PbO
1,4328986
BaO
-0,2036333 P2O5 4,1038535
SrO -14,5897249
SnO2 36,3990629
SO2 6,4818275

        A partir das duas matrizes de coeficientes de 2 e 3, pode-se descobrir que existem obviamente diferentes processos de intemperismo entre o vidro de chumbo-bário e o vidro de alto potássio.

        O código R utilizado é o seguinte. Vale ressaltar que o autor usa muitas variáveis ​​compartilhadas aqui, então os três modelos precisam ser executados sequencialmente em blocos, e não podem ser executados todos de uma vez, caso contrário o resultado obtido será o resultado do último modelo.

library(foreign)
library(glmnet)
class_weathering_chemical <- read.csv("./class_weathering_chemical.csv")
#####完全多变量回归#####
x <- as.matrix(class_weathering_chemical[,c(-1,-16:-18)])#定义回归自变量因变量
y <- as.matrix(class_weathering_chemical[,c(16:18)])
fit <- glmnet(x,y,"mgaussian",nlambda = 1000,alpha=1)#为了查看变量影响因素而进行的回归
plot(fit, xvar="lambda", label=TRUE)
lasso_fit <- cv.glmnet(x,y,family="mgaussian",alpha=1,type.measure = "mse",nlambda=1000)#交叉验证,最佳lambda
plot(lasso_fit)
lasso_best <- glmnet(x,y,family="mgaussian",alpha = 1,lambda = lasso_fit$lambda.min)#用λmin建立预测模型

lasso_best$a0#回归截距

k <- as.matrix(lasso_best$beta$rich_k)
k <- cbind(k,as.numeric(lasso_best$beta$PbBa))
k <- cbind(k,as.numeric(lasso_best$beta$weathering))
k <- as.data.frame(k)
names(k) <- c("高钾","铅钡","风化程度")#k为回归系数矩阵
print(k)


#####高钾玻璃的风化情况#####
richK_weathering_chemical <- read.csv("./richK_weathering_chemical.csv")
x <- as.matrix(richK_weathering_chemical[,c(-1,-16)])#定义回归自变量因变量
y <- as.matrix(richK_weathering_chemical[,16])#风化程度
fit <- glmnet(x,y,"gaussian",nlambda = 1000,alpha=0)#为了查看变量影响因素而进行的回归
plot(fit, xvar="lambda", label=TRUE)
lasso_fit <- cv.glmnet(x,y,family="gaussian",alpha=0,type.measure = "mse",nlambda=1000)#交叉验证,最佳lambda
plot(lasso_fit)
lasso_best <- glmnet(x,y,family="gaussian",alpha = 0,lambda = lasso_fit$lambda.min)#用λmin建立预测模型

lasso_best$a0#回归截距

k <- as.data.frame(as.matrix(lasso_best$beta))
names(k) <- "风化程度(0-2)"
print(k)

#####铅钡玻璃的风化情况#####
PbBa_weathering_chemical <- read.csv("./PbBa_weathering_chemical.csv")
x <- as.matrix(PbBa_weathering_chemical[,c(-1,-16)])#定义回归自变量因变量
y <- as.matrix(PbBa_weathering_chemical[,16])#风化程度
fit <- glmnet(x,y,"gaussian",nlambda = 1000,alpha=0)#为了查看变量影响因素而进行的回归
plot(fit, xvar="lambda", label=TRUE)
lasso_fit <- cv.glmnet(x,y,family="gaussian",alpha=0,type.measure = "mse",nlambda=1000)#交叉验证,最佳lambda
plot(lasso_fit)
lasso_best <- glmnet(x,y,family="gaussian",alpha = 0,lambda = lasso_fit$lambda.min)#用λmin建立预测模型

lasso_best$a0#回归截距

k <- as.data.frame(as.matrix(lasso_best$beta))
names(k) <- "风化程度(0-2)"
print(k)

 terceira pequena pergunta

        (3) De acordo com os dados de detecção do ponto de intemperismo, o conteúdo da composição química antes do intemperismo é previsto

        De acordo com a natureza do objeto a ser previsto, e referindo-se ao famoso sklearn abaixo, o autor escolheu o modelo de regressão ridge para prever a composição química.

        Nesta questão, combinamos as informações do Formulário 1 e do Formulário 2, usando decoração, grau de intemperismo e cor como variáveis ​​independentes e composição química como variáveis ​​dependentes

        Combinado com o tipo de vidro, dividimos a grande coleção. Ao prever a composição antes do intemperismo, ela é dividida em alto potássio e chumbo e bário para previsão, respectivamente. Importamos os dados, que contêm dados intemperizados e não intemperizados. Extraia tudo Os dados são usados ​​como o conjunto de treinamento; todos os dados de relíquia cultural intemperizados são extraídos como o conjunto a ser previsto e todos os graus de intemperismo do conjunto previsto são definidos como 0.

        Resultados de previsão da composição do vidro de chumbo-bário antes do intemperismo:

         O autor encontrou alguns problemas não resolvidos aqui: embora o resultado dos componentes após a previsão ainda seja somado a 1, o número de componentes negativos aparece. Embora os componentes negativos possam ser removidos diretamente e todos os componentes possam ser somados novamente, mas eu Não tenho certeza se essa abordagem é confiável. Outros resultados de previsão podem ser executados diretamente executando o código e ainda não o salvei especificamente.

 O código da linguagem R da terceira pequena pergunta é o seguinte:

library(foreign)
library(glmnet)
##########高钾玻璃的风化前预测##########
#####数据准备#####
rich_K_weathering_chemical <- read.csv("./predict_b4_weathering.csv")
rich_K_train <- data.frame()#划分训练集与测试集.有风化的做测试集,并把风化位置为0后作为预测集
for (i in c(1:nrow(rich_K_weathering_chemical))) {#从大集合中取出高钾玻璃作为训练集
  if(rich_K_weathering_chemical[i,"rich_k"] == 1){
    rich_K_train <- rbind(rich_K_train,rich_K_weathering_chemical[i,])
  }
}
rich_K_predict <- data.frame()
for (i in c(1:nrow(rich_K_train))) {#从训练集中取出有风化的作为测试集,并把风化程度置为0
  if(rich_K_train[i,"weathering"] != 0){
    rich_K_predict <- rbind(rich_K_predict,rich_K_train[i,])
  }
}
rich_K_predict[,"weathering"] <- 0#并把风化程度置为0
train_y <- as.matrix(rich_K_train[,2:15])#定义回归训练自变量因变量
train_x <- as.matrix(rich_K_train[,16:30])#自变量
#####模型拟合#####
fit <- glmnet(train_x,train_y,"mgaussian",nlambda = 1000,alpha=0)#为了查看变量影响因素而进行的回归
plot(fit, xvar="lambda", label=TRUE)
lasso_fit <- cv.glmnet(train_x,train_y,family="mgaussian",alpha=0,type.measure = "mse",nlambda=1000)#交叉验证,最佳lambda
plot(lasso_fit)
lasso_best <- glmnet(train_x,train_y,family="mgaussian",alpha = 0,lambda = lasso_fit$lambda.min)#用λmin建立预测模型
#####模型预测#####
#定义回归预测自变量
predict_x <- as.matrix(rich_K_predict[,16:30])#自变量
predict_result <- as.data.frame(predict(lasso_best,predict_x))#进行预测
predict_result <- cbind(rich_K_predict[,1],predict_result)#优化预测表格格式
names(predict_result) <- names(rich_K_predict[,1:15])
#print(predict_result)



##########铅钡玻璃的风化前预测##########
#####数据准备#####
PbBa_weathering_chemical <- read.csv("./predict_b4_weathering.csv")
PbBa_train <- data.frame()#划分训练集与测试集.有风化的做测试集,并把风化位置为0后作为预测集
for (i in c(1:nrow(PbBa_weathering_chemical))) {#从大集合中取出铅钡玻璃作为训练集
  if(PbBa_weathering_chemical[i,"PbBa"] == 1){
    PbBa_train <- rbind(PbBa_train,PbBa_weathering_chemical[i,])
  }
}
PbBa_predict <- data.frame()
for (i in c(1:nrow(PbBa_train))) {#从训练集中取出有风化的作为测试集,并把风化程度置为0
  if(PbBa_train[i,"weathering"] != 0){
    PbBa_predict <- rbind(PbBa_predict,PbBa_train[i,])
  }
}
PbBa_predict[,"weathering"] <- 0#并把风化程度置为0
train_y <- as.matrix(PbBa_train[,2:15])#定义回归训练自变量因变量
train_x <- as.matrix(PbBa_train[,16:30])#自变量
#####模型拟合#####
fit <- glmnet(train_x,train_y,"mgaussian",nlambda = 1000,alpha=0)#为了查看变量影响因素而进行的回归
plot(fit, xvar="lambda", label=TRUE)
lasso_fit <- cv.glmnet(train_x,train_y,family="mgaussian",alpha=0,type.measure = "mse",nlambda=1000)#交叉验证,最佳lambda
plot(lasso_fit)
lasso_best <- glmnet(train_x,train_y,family="mgaussian",alpha = 0,lambda = lasso_fit$lambda.min)#用λmin建立预测模型
#####模型预测#####
#定义回归预测自变量
predict_x <- as.matrix(PbBa_predict[,16:30])#自变量
predict_result <- as.data.frame(predict(lasso_best,predict_x))#进行预测
predict_result <- cbind(PbBa_predict[,1],predict_result)#优化预测表格格式
names(predict_result) <- names(PbBa_predict[,1:15])
#print(predict_result)

segunda questão

        O autor refere-se às ideias do segundo grande problema de outras pessoas para modelagem. O segundo grande problema é dividido nas seguintes três questões por mim:

(1) Analisar as regras de classificação de vidro de alto potássio e vidro de chumbo-bário de acordo com os dados em anexo; 

(2) Selecione a composição química apropriada para cada categoria para dividi-la em subcategorias e forneça o método de divisão específico e os resultados da divisão;

(3) e analisar a racionalidade e precisão dos resultados da classificação;

        Na segunda questão, devido à alta dimensionalidade dos dados de composição química, é impossível entender intuitivamente a relação após o agrupamento, e o desastre da dimensionalidade também pode ocorrer no agrupamento direto. Portanto, primeiro uso o PCA para redução da dimensionalidade e em seguida, use Kmeans para agrupamento. O conjunto é marcado com rótulos de subclasse. No entanto, como os componentes principais após a redução de dimensionalidade não têm boa interpretabilidade, são usados ​​componentes químicos e árvores de decisão para supervisionar os rótulos de classificação, de modo a obter informações visuais e padrões de classificação fáceis de entender.

Primeira perguntinha

        (1) De acordo com os dados em anexo, analise as regras de classificação de vidro de alto potássio e vidro de chumbo-bário

        Este é um problema de classificação binária simples. Aqui usamos Python para classificar usando o algoritmo de árvore de decisão. É basicamente o mesmo que nas etapas anteriores. Aqui usamos um conjunto de dados contendo composição química, rótulos de categoria de vidro e grau de intemperismo para dois preliminares categorias.     

(class_weathering_chemical.csv no arquivo vinculado no final do artigo)

        Uma árvore de decisão é construída com a composição química como variável independente e o rótulo do tipo de vidro como variável dependente, então a visualização da árvore de decisão é mostrada na figura.

        Esta é uma árvore de decisão com uma profundidade ideal de 1 após a pesquisa da grade. A taxa de precisão da validação cruzada pode chegar a 100%, a taxa de precisão dos resultados da classificação também atingiu 100% e a entropia da informação em cada nó é 0. Ou seja, podemos julgar se o vidro é de alto potássio ou chumbo-bário apenas pelo teor de óxido de chumbo. Se o teor de óxido de chumbo for inferior a 0,061, consideramos que é vidro de alto potássio Se for superior a 0,061, consideramos que é um vidro de chumbo-bário.

O primeiro código de pequena pergunta (Python) é o seguinte:

import numpy as np
import pandas as pd
from sklearn.model_selection import GridSearchCV # 通过网格方式来搜索参数
from sklearn.tree import DecisionTreeClassifier as dtc
import matplotlib.pyplot as plt # 可视化
from matplotlib import rcParams # 图大小
from sklearn.tree import plot_tree # 树图

data = pd.read_csv("class_weathering_chemical.csv")#导入数据集
features = data.columns[1:15]
X = data[features]#设置待估Xy
y = data[data.columns[15:17]]

# 设置需要搜索的参数值,在这里寻找最优的决策树深度
parameters = {'max_depth':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]}
model = dtc()  # 注意:在这里不用指定参数
# GridSearchCV
clf = GridSearchCV(model, parameters, cv=5)   
clf.fit(X, y)
# 输出最好的参数以及对应的准确率
print ("best score is: %.4f"%clf.best_score_, "  best param: ",clf.best_params_,)

model = dtc(max_depth=3,criterion = 'entropy')#一层无法可视化,于是构建两层
model = model.fit(X, y)

rcParams['figure.figsize'] = (5, 5)
target_names = ['rich_k','PbBa']
from sklearn.tree import plot_tree # 树图
plot_tree(
    model, 
    feature_names = features,  
    class_names= target_names,
    filled=True,
    rounded = True
)
plt.savefig('如何划分铅钡和高钾.png')

segunda questão 

(2) Selecione a composição química apropriada para cada categoria para dividi-la em subcategorias, forneça o método de divisão específico e os resultados da divisão,

        Aqui, criamos subcategorias para intemperismo de chumbo-bário, não intemperismo de chumbo-bário, intemperismo de alto potássio e não intemperismo de alto potássio.

        Por que não dividir diretamente as subcategorias com base em chumbo-bário e alto teor de potássio, mas primeiro distinguir entre intemperizado e não intemperizado? A razão é que, a partir da análise anterior, há uma diferença na composição química entre intemperizado e não intemperizado. ao título Ao escolher uma composição química apropriada para a subcategoria, é provável que o modelo "descubra" novamente a diferença de composição química entre o vidro intemperizado primário e o vidro não intemperizado, resultando em um esforço inútil na classificação da subcategoria.

        Dividimos o vidro em quatro conjuntos de dados, correspondentes a quatro tipos diferentes de vidro:

        Em seguida, execute a mesma operação nesses quatro conjuntos de dados. As subcategorias das quatro categorias podem ser divididas. O autor explica apenas as subcategorias de vidro temperado com chumbo-bário em detalhes aqui, e as outras três categorias são as mesmas.

        Primeiro, realizamos a redução da dimensão do PCA, integramos quinze componentes químicos em dois componentes principais, adicionamos essas duas colunas ao quadro de dados importado e observamos quanto da variância esses dois componentes principais contribuem:

        As duas colunas de componentes principais contribuem com quase 85% da variância. Acreditamos que essas duas colunas de componentes principais podem ser usadas como os componentes principais do conjunto de dados original. Em seguida, usamos essas duas colunas de componentes principais fac1, fac2 como o base para clustering, e realizar clustering KMeans no conjunto de dados Class. Considerando a pequena escala do conjunto de dados, os tipos de subclasses não devem ser muitos, selecionaremos o valor de K de [2,3,4,5] .

for n, ax  in zip([2,3,4,5], sub.flatten()):
    kmean = KMeans(n_clusters=n)
    data.loc[:,str(n) + 'type'] = kmean.fit_predict(data.loc[:,['fac1','fac2']])

        Usamos essas duas linhas de código para estabelecer modelos KMeans quando K=2, 3, 4 e 5 e, em seguida, usamos modelos com diferentes números de cluster para agrupar os conjuntos de dados e adicionamos os rótulos de cluster aos dados originais do conjunto de dados no nova coluna. Depois de executar esses códigos, além da coluna de composição química, a coluna do componente principal fac1, fac2 no conjunto de dados de dados, o atributo de agrupamento (as últimas quatro colunas) de uma amostra sob diferentes números de agrupamento também é adicionado. Como segue:

Nota: A coluna sem nome foi introduzida por razões desconhecidas e esta coluna não existia no conjunto de dados original. Eu estava com um pouco de preguiça e não a deletei.

Mas esta coluna não afetará a operação do programa e a análise de dados. 

         Em seguida, realizamos uma visualização simples desses resultados de agrupamento:

         No entanto, as duas colunas de componentes principais e os componentes originais após a análise de componentes principais não têm boa interpretabilidade e não podemos fornecer uma boa composição química para subclassificação com base nos componentes principais. Portanto, usamos a composição química novamente Como uma variável independente, o o rótulo da subcategoria é usado como uma variável dependente, e a árvore de decisão é usada para explorar os critérios de classificação específicos da subcategoria.No entanto, como você sabe qual número de cluster é o mais apropriado entre os clusters 2, 3, 4 e 5? Como a quantidade de conjunto de dados não é grande, optamos por tentar de tudo, de 2 a 5 classificações, usar o modelo de árvore de decisão para classificar diferentes K, usar o modelo de árvore de decisão para validar a precisão para encontrar o número ideal de classificações e usar a precisão mais alta O número de clusters é usado como o número de subcategorias. Para o vidro intemperizado de chumbo-bário, obtemos uma precisão de validação cruzada de 2 classificações com a precisão mais alta de 1. Em seguida, usamos o rótulo das 2 classificações como variável dependente e a composição química como variável independente. Faça uma árvore de decisão e visualize-a para obter os seguintes resultados:

        

        De acordo com o classificador, o vidro intemperizado com chumbo-bário é dividido em subcategorias com base no teor de dióxido de enxofre. Os menores ou iguais a 0,01 são classificados como classe 1 e os maiores que 0,01 são classificados como classe 0. O restante do as classes podem ser obtidas por analogia. Resultados da classificação. Resumo dos resultados da classificação da subclasse:

Resumo da taxonomia
categoria de vidro Constituintes químicos de marcadores de distinção de subclasse subclasse
intemperismo de chumbo e bário dióxido de enxofre

(SO<=0,01)

classe 1

(outro)

classe0

Bário de chumbo sem intemperismo sílica

(SiO2>0,581)

classe0

(0,398<=SiO2<=0,581) classe2

(SiO2<=0,398)

classe 1

Intemperismo de alto potássio Óxido de aluminio

(Al2O3 <=0,017)

classe0

(outro)

classe 1

Potássio alto sem intemperismo sílica

(SiO2<=0,744)

classe 1

(outro)

classe0

(Simplesmente encontre uma regra: após o intemperismo, os oligoelementos são usados ​​como padrão de classificação. Antes do intemperismo, a sílica é usada como padrão de classificação.)

terceira pequena pergunta

(3) E analisar a racionalidade e sensibilidade dos resultados da classificação.

        Análise de racionalidade: O agrupamento após a análise de componentes principais garante que cada componente químico tenha uma taxa de contribuição apropriada, evitando o desastre da dimensionalidade.Testes de validação cruzada são realizados em diferentes números de agrupamentos usando modelos de classificação para garantir a precisão e a razoabilidade da classificação.

        Análise de sensibilidade: O modelo é extremamente simples e claro, com apenas um componente químico-chave e um ou dois critérios de classificação. Desde que exceda o limite, ele será classificado. A alteração de variáveis ​​não-chave não afetará a classificação sob esta condição . Apenas a flutuação de variáveis-chave terá impacto na classificação

        Como os quatro códigos da segunda pequena pergunta são todos homogêneos, não são mostrados todos os códigos aqui, apenas os códigos usados ​​na análise acima. Todos os códigos podem ser usados ​​no anexo ao final do artigo.

O código para a segunda pequena pergunta da segunda pergunta:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

data= pd.read_csv("./亚类分析/PbBa_weathering_chemical.csv")#铅钡风化的亚类分析

from sklearn.decomposition import PCA #使用PCA进行降维
X = data.iloc[:,1:15]
pca = PCA(n_components=2, copy=True,)
newX = pca.fit_transform(X)
#invX = pca.inverse_transform(newX)
#print(pca.components_)
print(pca.explained_variance_ratio_)
data['fac1'] = newX[:,0] #两个因子分别命名和储存到data中
data['fac2'] = newX[:,1]

from sklearn.cluster import KMeans #KMeans

fig, sub = plt.subplots(2,2,dpi = 300, figsize = (10,9))#将无监督聚类的散点进行可视化
plt.subplots_adjust(wspace=0.2, hspace=0.2)
for n, ax  in zip([2,3,4,5], sub.flatten()):
    kmean = KMeans(n_clusters=n)
    data.loc[:,str(n) + 'type'] = kmean.fit_predict(data.loc[:,['fac1','fac2']])
    sns.scatterplot(data = data, x = 'fac1', y = 'fac2', c =data.loc[:,str(n) + 'type'], ax =ax )
    ax.set_title(str(n)+'clusters distribution')
    plt.tight_layout()
    plt.savefig('铅钡风化聚类结果展示.png', dpi = 300, facecolor = 'w', bbox_inches = 'tight')

import numpy as np
from sklearn.model_selection import GridSearchCV # 通过网格方式来搜索参数
from sklearn.tree import DecisionTreeClassifier as dtc
import matplotlib.pyplot as plt # 可视化
from matplotlib import rcParams # 图大小
from sklearn.tree import plot_tree # 树图

features = data.columns[1:15]
X = data[features]#设置待估Xy
for i in range(2,6):#从二分类到5分类,对不同的y利用决策树进行网格搜索,寻找最优分类数量
    y = data.loc[:,str(i)+'type']
    # 设置需要搜索的参数值,在这里寻找最优的决策树深度
    parameters = {'max_depth':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]}
    model = dtc()  
    clf = GridSearchCV(model, parameters, cv=5) #网格搜索  
    clf.fit(X, y)
    # 输出最好的参数以及对应的准确率
    #print ("在",i,"个聚类中","最优分数: %.4f"%clf.best_score_, "  最佳参数: ",clf.best_params_,)
    if(i == 2):#存储最好的各类参数
        current_best = clf.best_score_
        best_number = i
        depth = clf.best_params_['max_depth']
    else:
        if(current_best < clf.best_score_):
            best_number = i
            current_best = clf.best_score_
            depth = clf.best_params_['max_depth']
print("在",best_number,"个聚簇时决策树交叉验证准确率最高,为",current_best,"决策树最大深度",depth)
#深度为1的决策树无法画图.且希望多展示一层.
depth = depth + 1

classify_result = data[data.columns[0:15]]#输出最优分类结果
classify_result['sub_class'] = data[str(best_number)+'type']
classify_result.to_csv('铅钡风化亚类分类结果.csv')

#多次执行以上语句之后,选择最优分数对应的聚类数量(如相同分数取聚类数少的:奥卡姆剃刀)和最优决策树层数+1作为铅钡风化玻璃划分子类数量
y = data.loc[:,str(best_number)+'type']#利用上面的最优参数取对应的列作为y
class_names = []
for i in range(0,best_number):
    class_names.append(str(i))#为可视化创建类标签
model = dtc(max_depth=depth,criterion = 'entropy')
model = model.fit(X, y)
rcParams['figure.figsize'] = (5, 5)
from sklearn.tree import plot_tree # 树图
plot_tree(
    model, 
    feature_names = features,
    class_names = class_names,  
    filled=True,
)
plt.savefig('铅钡风化玻璃中的亚类划分.png')

terceira pergunta

(1) Analisar a composição química das relíquias culturais de vidro desconhecidas no formulário anexo 3, identificar seu tipo e analisar a sensibilidade dos resultados da classificação.

        Este conjunto de dados fornece oito relíquias culturais de vidro A1-A8, e as informações incluem o desgaste da superfície e os tipos que precisamos julgar. Combinando os resultados das duas perguntas anteriores, adicionei a divisão de subcategorias ao dividir. Primeiro, divida-os em De acordo com as condições da árvore de decisão abaixo, julgamos que A1, A6 e A7 são vidros com alto teor de potássio e os demais são todos vidros com chumbo-bário.

        Depois disso, combinado com a situação de intemperismo, dividimos esses tipos de vidro em subcategorias. Os critérios para a divisão foram mostrados na divisão de subcategoria e não serão mostrados aqui. Os resultados finais da divisão são mostrados na tabela a seguir:

Número do patrimônio intemperismo superficial categoria subclasse
A1 intemperizado potássio alto Alto Potássio_Sem Intemperismo_class0(Alto Sílica)
A2 intemperismo chumbo bário Chumbo bário_weathering_class1 (baixo dióxido de enxofre)
A3 intemperizado chumbo bário Chumbo barium_non-weathered_class1 (baixo teor de sílica)
A4 intemperizado chumbo bário Chumbo barium_non-weathered_class1 (baixo teor de sílica)
A5 intemperismo chumbo bário Chumbo bário_weathering_class1 (baixo dióxido de enxofre)
A6 intemperismo potássio alto Potassium_Weathering_class0 alto (baixo óxido de alumínio)
A7 intemperismo potássio alto Alto potássio_weathering_class1 (alto óxido de alumínio)
A8 intemperizado chumbo bário Chumbo bário_não-intemperizado_class2 (sílica média)

         Análise de sensibilidade: Como essas classificações são especificadas por árvores de decisão e o número de camadas da árvore de decisão não excede dois, essas classificações estão livres de interferência de variáveis ​​irrelevantes e estão relacionadas apenas a indicadores-chave. afetarão os resultados da classificação.

quarta pergunta

        (1)针对不同类别的玻璃文物样品, 分析其化学成分之间的关联关系,

        (2)并比较不同类别之间的化学成分关联关系的差异性.

第一小问

(1)针对不同类别的玻璃文物样品, 分析其化学成分之间的关联关系,

        为了统计观察方便,我只对铅钡风化,铅钡无风化,高钾风化,高钾无风化四个大类进行了化学成分关联性的分析.分别针对这四类进行了相关性热力图的绘制,并只保留置信度95%以上的色块,并且分别对四幅图进行分析.

铅钡无风化

        最显著的特点是铅钡和二氧化硅的负相关性.由资料可得铅钡玻璃中二氧化硅的成分占比较低.主要由氧化铅组成.可以合理推测添加氧化铅和氧化钡(使用助融剂)可导致二氧化硅水平的下降.

铅钡风化

        相比于不风化的时候,多出了很多化学成分并出现了很多相关关系.最显著的特征是钙镁铝铁(除去铝和钙)这四大元素之间的正相关性相比于未风化时显著增强.由之前的分析,风化过程中铅钡玻璃的钡元素流失明显,可以推测镁,铁等元素是风化过程中的环境元素交换到玻璃中的结果.

高钾不风化

        高钾玻璃最显著的特征是对角线附近的元素相关性.高钾玻璃中的钠钾钙之间的强正相关考虑是加入草木灰这样的助融剂而导致的.但助融剂会导致二氧化硅占比的下降,这样的规律在以铅矿石作为玻璃助融剂的时候同样存在.

高钾风化

        高钾玻璃风化之后与环境交换的元素相对于铅钡玻璃来说较少,也能够体现出高钾玻璃的抗风化能力强于铅钡玻璃.由于高钾玻璃风化后的样本比较少,且检测不到的元素类型很多,所以热力图中出现了较多的空缺.氧化钙,三氧化二铝都与二氧化硅含量成负相关,而铝和钙之间成正相关.

        该小问代码原理与之前展示过的相同,便不再展示.需要获取请点击文末链接.

第二小问

(2)并比较不同类别之间的化学成分关联关系的差异性.

        高钾玻璃和铅钡玻璃的横向对比:主要区别在于,相比于高钾玻璃,铅钡玻璃含有的元素种类更多,元素之间的相关性也容易产生了.而且由图像可知,这两者之间作比较,横向的元素关联不大,相关系数的热力图甚至呈互补的趋势.而主要的联系在于,不论使用何种助融剂,都会降低二氧化硅的占比.

        风化和未风化之间的横向对比:风化会导致原来的主要成分和特征元素含量下降(比如二氧化硅和铅钡玻璃中的钡元素),并且会稀释原有元素之间的关联性,使得风化前后的热力图呈互补趋势,这说明不同风化流失元素的流失速率并不相同.从外界交换进来的金属元素之间会产生新的关联.

        高钾风化和铅钡风化之间的横向对比:在第二题中我们已经得出了这两者具有完全不同的风化进程的结论.在这里的分析进一步加强了这一个结论的可信度.铅钡玻璃更容易风化,更容易和外界交换元素.而高钾玻璃不容易风化,甚至很少引进新的元素,只是自身原来具有的元素之间关联度下降.

四:不足之处与待改进分析

        1.过程中大量使用了相关系数热力图去衡量变量之间的关系.但是有时候相关的变量很多,往往没有分析出关键点.并且由于背景化学知识的缺乏,也无法从关系之中得出有效的结论.

        2.分类模型大量采用决策树模型.虽然简单有效,但是仍需要质疑如此简单的分类标准是否合适.

        3.预测风化前化学成分的时候表单中出现了负成分.是否有更好的方法和模型可以处理成分数据?直接去掉负值并重新定和是否可以接受还有待讨论.

        4.PCA+KMeans+决策树的方法中,衡量模型性能的指标是交叉验证准确率.但随着聚类的增多,交叉验证确实准确率有可能下降,但这个时候并不一定代表聚类不合理.是否存在更合理的聚类方式还有待探讨.

        5.文中的很多分析,包括描述统计和相关关系分析中还需要更多的数据支持.

五:代码&数据集资源

百度网盘资源链接:源代码&数据集

提取码: m5kb

GitHub Connect: código-fonte e conjuntos de dados

Última atualização de código e conjunto de dados: 8 de dezembro de 2022

Acho que você gosta

Origin blog.csdn.net/Nucleon_17th/article/details/128170266
Recomendado
Clasificación