Şizofreni Hastalarının Konuşma Ve Yazma Metinlerinden PANSS (Pozitif ve Negatif Sendrom Ölçeği) Skorlarını Tahmin Etmek İçin Bir Makine Öğrenmesi Projesi
Kaya Ridvan
Şizofreni Hastalarının Konuşma Ve Yazma Metinlerinden PANSS (Pozitif ve Negatif Sendrom Ölçeği) Skorlarını Tahmin Etmek İçin Bir Makine Öğrenmesi Projesi
Þizofreni Hastalarýnýn Konuþma Ve Yazma Metinlerinden PANSS (Pozitif ve Negatif Sendrom Ölçeði) Skorlarýný Tahmin Etmek Ýçin Bir Makine Öðrenmesi Projesi
# Import libraries
import numpy as np
import pandas as pd
import spacy
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# Load data
data = pd.read_csv("schizophrenia_data.csv")
data.head()
# Split data into train and test sets
train, test = train_test_split(data, test_size=0.2, random_state=42)
# Load a pre-trained language model for Turkish
nlp = spacy.load("tr_core_news_md")
# Define a function to preprocess text
def preprocess(text):
"""
Tokenize, lemmatize, and remove stopwords and punctuation from text.
"""
doc = nlp(text)
tokens = [token.lemma_ for token in doc if not token.is_stop and not token.is_punct]
return " ".join(tokens)
# Apply the preprocess function to the text columns
train["speech"] = train["speech"].apply(preprocess)
train["writing"] = train["writing"].apply(preprocess)
test["speech"] = test["speech"].apply(preprocess)
test["writing"] = test["writing"].apply(preprocess)
# Define a function to extract features from text using TF-IDF
def extract_features(text):
"""
Initialize a TF-IDF vectorizer and transform the text into features.
"""
vectorizer = TfidfVectorizer()
features = vectorizer.fit_transform(text)
return features
# Extract features from the speech and writing columns
X_train_speech = extract_features(train["speech"])
X_train_writing = extract_features(train["writing"])
X_test_speech = extract_features(test["speech"])
X_test_writing = extract_features(test["writing"])
# Define a function to train a linear regression model
def train_model(X_train, y_train):
"""
Initialize a linear regression model and fit it to the training data.
"""
model = LinearRegression()
model.fit(X_train, y_train)
return model
# Define a function to evaluate a model
def evaluate_model(model, X_test, y_test):
"""
Predict PANSS scores for the test data and calculate RMSE.
"""
y_pred = model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
return rmse
# Train a model for speech and writing separately
model_speech = train_model(X_train_speech, y_train)
model_writing = train_model(X_train_writing, y_train)
# Evaluate the models for speech and writing separately
rmse_speech = evaluate_model(model_speech, X_test_speech, y_test)
rmse_writing = evaluate_model(model_writing, X_test_writing, y_test)
# Print the results
print(f"RMSE for speech: {rmse_speech:.2f}")
print(f"RMSE for writing: {rmse_writing:.2f}")
#Yazan Rýdvan Kaya
Bu kod, þizofreni hastalarýnýn konuþma ve yazma metinlerinden PANSS (Pozitif ve Negatif Sendrom Ölçeði) skorlarýný tahmin etmek için bir makine öðrenmesi projesidir. Kodun yaptýðý þeyler þunlardýr:
- Gerekli kütüphaneleri içe aktarýr. Bu kütüphaneler, veri iþleme, doðal dil iþleme, model eðitimi ve deðerlendirme için kullanýlýr.
- Veri setini yükler. Veri seti, þizofreni hastalarýnýn konuþma ve yazma metinleri ile PANSS skorlarýný içerir.
- Veri setini eðitim ve test setlerine ayýrýr. Test seti, modelin performansýný ölçmek için kullanýlýr.
- Türkçe için önceden eðitilmiþ bir dil modeli yükler. Bu model, metinleri iþlemek için kullanýlýr.
- Metinleri ön iþlemeye tabi tutan bir fonksiyon tanýmlar. Bu fonksiyon, metinleri bölümlere ayýrýr, köklerine indirger ve durak sözcükleri ve noktalama iþaretlerini kaldýrýr.
- Ön iþleme fonksiyonunu, konuþma ve yazma sütunlarýna uygular.
- Metinlerden TF-IDF kullanarak öznitelik çýkaran bir fonksiyon tanýmlar. TF-IDF, metinlerdeki sözcüklerin önemini ölçen bir yöntemdir.
- Konuþma ve yazma sütunlarýndan öznitelik çýkarýr.
- Doðrusal regresyon modeli eðiten bir fonksiyon tanýmlar. Doðrusal regresyon, baðýmlý ve baðýmsýz deðiþkenler arasýndaki iliþkiyi bulmaya çalýþan bir yöntemdir.
- Modeli deðerlendiren bir fonksiyon tanýmlar. Model, test verileri için PANSS skorlarýný tahmin eder ve RMSE (Kök Ortalama Kare Hata) hesaplar. RMSE, tahminlerin gerçek deðerlerden ne kadar uzak olduðunu gösteren bir ölçüttür.
- Konuþma ve yazma için ayrý ayrý model eðitir.
- Konuþma ve yazma için ayrý ayrý model deðerlendirir.
- Sonuçlarý yazdýrýr. RMSE deðerleri, modelin ne kadar iyi performans gösterdiðini gösterir. Düþük RMSE deðerleri, modelin daha doðru tahminler yaptýðý anlamýna gelir.
Bu kodu çalýþtýrmak için þu adýmlarý izleyebilirsiniz:
- Bir Python ortamý kurun. Bu, kodun çalýþmasý için gerekli kütüphaneleri içerir. Örneðin, Google Colab gibi bir çevrimiçi ortam kullanabilirsiniz.
- Veri setini indirin ve ortamýnýza yükleyin.
- Kodu bir metin editörüne kopyalayýn ve çalýþtýrýn. Kodu çalýþtýrmak için [Shift + Enter] tuþlarýna basabilirsiniz. Kod, her bir hücreyi sýrayla çalýþtýrýr ve sonuçlarý ekranda gösterir.
Bu adýmlarý takip ederek, þizofreni hastalarýnýn konuþma ve yazma metinlerinden PANSS skorlarýný tahmin etmek için bir makine öðrenmesi modeli eðitmiþ ve deðerlendirmiþ olacaksýnýz.
Sosyal Medyada Paylaşın:
(c) Bu şiirin her türlü telif hakkı şairin kendisine ve/veya temsilcilerine aittir.