Сейчас я пытаюсь автоматизировать процесс оценки для моей компании. В прошлом весь процесс занимал не менее двух недель, и мне удавалось автоматизировать все, что требовалось как минимум 1 день для всего процесса без контроля качества.
Бывший коллега оставил свои сценарии R, и мне удалось написать сценарий Python на основе сценария R PSM, но результат был другим, почти идентичным. Я использовал одни и те же данные для сценария R PSM и моего сценария PSM на Python. База данных хранится в таблице db2:
Сценарий Python:
import pandas as pd
from connection import MetaData, cursor1, connection1
from sklearn.neighbors import NearestNeighbors # KNN
from sklearn.linear_model import LogisticRegression
import os
### DB Connection in connection.py
metadata = MetaData()
# Connextion to Database
engine = define_connection2()
# SQL-Query
sql = 'SELECT * FROM Table1'
# Process the Query
with engine.connect() as connection:
dataSample_all = pd.read_sql_query(sql, connection)
dataSample = dataSample_all.copy()
# Convert factors to numeric values
for col in dataSample.columns:
if dataSample[col].dtype == 'object':
dataSample[col] = pd.to_numeric(dataSample[col].str.replace(',', '.'), errors='coerce')
# Calculate total cost SA700
dataSample['G'] = dataSample[['BETRAG_ARZT_VJ', 'BETRAG_ZAHNARZT_VJ', 'BETRAG_APOTHEKE_VJ',
'BETRAG_KRKHS_VJ', 'BETRAG_SONST_VJ', 'BETRAG_DIALYSE_VJ',
'BETRAG_DMP_VJ', 'BETRAG_KRGELD_VJ', 'BETRAG_KRGELD_KIND_VJ']].sum(axis=1)
# Define variables
Tr = dataSample['TN']
Y = dataSample['G']
X = dataSample[[
'KV_1','KV_2','KV_3','KV_4','KV_5','KV_6','KV_7','KV_8','KV_9','KV_10','KV_11','KV_12','KV_13','KV_14','KV_15','KV_16',....
....,'KNR360_Nr234','PFLEGE_NR1','PFLEGE_NR2','PFLEGE_NR3','PFLEGE_NR4','PFLEGE_NR5'
]] # 285 Attributes
# Logistic regression to calculate propensity scores
logit_model = LogisticRegression(max_iter=1500, solver='saga', random_state=32)
logit_model.fit(X, Tr)
propensity_scores = logit_model.predict_proba(X)[:, 1]
# Indices for treated and control group
treated_indices = np.where(Tr == 1)[0]
control_indices = np.where(Tr == 0)[0]
# Nearest Neighbors for the control group (KNN)
nn = NearestNeighbors(n_neighbors=1)
nn.fit(propensity_scores[control_indices].reshape(-1, 1))
# Finding the nearest neighbors for the treatment group
distances, indices = nn.kneighbors(propensity_scores[treated_indices].reshape(-1, 1))
# Define caliper value
caliper = 0.02
# Filter pairs within the caliper
valid_matches = distances.flatten()
Подробнее здесь: [url]https://stackoverflow.com/questions/78994687/propensity-score-matching-with-python[/url]
Сейчас я пытаюсь автоматизировать процесс оценки для моей компании. В прошлом весь процесс занимал не менее двух недель, и мне удавалось автоматизировать все, что требовалось как минимум 1 день для всего процесса без контроля качества. Бывший коллега оставил свои сценарии R, и мне удалось написать сценарий Python на основе сценария R PSM, но результат был другим, почти идентичным. [b]Я использовал одни и те же данные для сценария R PSM и моего сценария PSM на Python.[/b] База данных хранится в таблице db2: Сценарий Python: [code]import pandas as pd from connection import MetaData, cursor1, connection1 from sklearn.neighbors import NearestNeighbors # KNN from sklearn.linear_model import LogisticRegression import os
### DB Connection in connection.py
metadata = MetaData()
# Connextion to Database engine = define_connection2()
# SQL-Query sql = 'SELECT * FROM Table1'
# Process the Query with engine.connect() as connection:
# Convert factors to numeric values for col in dataSample.columns: if dataSample[col].dtype == 'object': dataSample[col] = pd.to_numeric(dataSample[col].str.replace(',', '.'), errors='coerce')