Prediksi Produktivitas Karyawan Menggunakan Machine Learning Python – Menuju AI

Prediksi Produktivitas Karyawan Menggunakan Machine Learning Python – Menuju AI

Pengarang: Muttineni Sai Rohith

Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.

Seringkali di industri, penting untuk menganalisis, melacak, dan memprediksi produktivitas karyawan karena perusahaan bergantung pada produktivitas dan kinerja pekerja mereka. Selain itu, berbagai faktor memainkan peran kunci dalam mempengaruhi produktivitas karyawan seperti insentif yang diberikan, domain tempat mereka bekerja, jam kerja, hari — seperti yang sering diyakini orang bahwa ini memainkan peran besar, tim tempat mereka bekerja, dan banyak lainnya. fitur. Karena perusahaan membutuhkan produktivitas karyawan yang baik, mereka perlu menganalisis dan menjaga fitur-fitur ini.

Pada artikel ini, kita akan memprediksi produktivitas Karyawan berdasarkan berbagai fitur.

Foto oleh Andreas Klassen di Unsplash

Himpunan data

Dataset yang digunakan dalam artikel ini diambil dari Kaggle. Kita dapat menemukan dataset di sini. Dataset ini terdiri dari informasi tentang 1197 karyawan yang bekerja di Industri Garmen. Fitur yang digunakan dalam Dataset ini adalah —

Dataset berisi 1197 baris dan 15 kolom

impor panda sebagai pd df = pd.read_csv(“garments_worker_productivity.csv”)
df.head(5)

Informasi Atribut:

tanggal: Tanggal dalam MM-DD-YYYY

hari: Hari Minggu

kuartal: Bagian dari bulan. Sebulan dibagi menjadi empat kuartal

departemen: Departemen terkait dengan instance

teamno: Nomor tim terkait dengan instance

noofworkers: Jumlah pekerja di setiap tim

noofstylechange: Jumlah perubahan gaya produk tertentu

produktivitas yang ditargetkan: Produktivitas yang ditargetkan yang ditetapkan oleh Otoritas untuk setiap tim untuk setiap hari.

smv: Nilai Menit Standar, ini adalah waktu yang dialokasikan untuk suatu tugas

WIP: Pekerjaan sedang berlangsung. Termasuk jumlah item yang belum selesai untuk produk

overtime: Mewakili jumlah overtime oleh masing-masing tim dalam menit

insentif: Mewakili jumlah insentif keuangan (dalam BDT) yang memungkinkan atau memotivasi tindakan tertentu.

idletime: Jumlah waktu ketika produksi terganggu karena beberapa alasan

idlemen: Jumlah pekerja yang menganggur karena gangguan produksi

aktual_produktivitas: % aktual produktivitas yang dihasilkan oleh pekerja. Ini berkisar dari 0-1.

EDA

Mari kita lakukan beberapa Analisis Data

Ubah kolom string tanggal menjadi objek Tanggal —

df[“date”] = pd.to_datetime(df[“date”])

Mari kita lihat jenis departemen —

df[‘department’].nilai_jumlah()
Keluaran

Di sini kita bisa melihat bahwa ruang dalam finishing membaginya menjadi dua kategori berbeda. Sekarang mari kita gabungkan mereka.

df[‘department’] = df[‘department’].apply(lambda x: ‘finishing’ if x.replace(” “,””) == ‘finishing’ else ‘sewing’ ) df.department.value_counts().plot.pie(autopct=’%.2f %% ‘)
Keluaran

Seperti yang kita lihat, 58% karyawan bekerja di menjahit sementara 42% di finishing.

Mari kita bandingkan produktivitas aktual dan produktivitas target untuk melihat kinerja karyawan.

impor seaborn sebagai sns
impor matplotlib.pyplot sebagai plt plt.figure(figsize = (15,5)) ax=sns.lineplot(y=’targeted_productivity’,x=’date’ ,color = “red”, data =df,legend=’brief ‘) ax=sns.lineplot(y= ‘actual_productivity’,x=’date’,data=df, color=”green”, legend = ‘brief’) ax.set(ylabel = ‘Productivity’) plt.show( )
Keluaran

Seperti yang bisa kita lihat, tradeoff tidak begitu konsisten, tetapi produktivitas secara keseluruhan dipertaruhkan.

Sekarang Mari kita menganalisis apakah hari tertentu dalam seminggu atau tim atau departemen memiliki pengaruh yang signifikan terhadap produktivitas.

aku = []
l1=[]
column_name = “hari” untuk saya dalam daftar(df[column_name].unique()): print( f”produktivitas pada {i} adalah “,df[df[column_name] == saya][“actual_productivity”].mean()) l.append(df[df[column_name] == saya][“actual_productivity”].mean()) l1.append(i) dictionary = {“data”:l,”keys”:l1} sns.barplot( x = “keys” , y = “data”, data = dictionary)
Keluaran

Kita dapat melihat produktivitas konstan sepanjang jumlah hari. Mari kita ulangi proses yang sama untuk fitur lain dengan mengganti column_name dengan nama kolom yang ditargetkan pada kode di atas —

Keluaran

Seperti yang bisa kita lihat di atas, produktivitas tidak bergantung pada tim, kategori, Quarter, atau hari.

Mari kita plot Matriks korelasi untuk melihat jumlah korelasi —

corrMatrix = df.corr() fig, ax = plt.subplots(figsize=(15,15)) # Contoh figsize dalam inci sns.heatmap(corrMatrix, annot=True, linewidths=.5, ax=ax) plt.show ()
Keluaran

Jadi dari data tersebut, cukup terlihat produktivitas terutama tergantung pada target produktivitas karena memiliki target akan memotivasi dan meningkatkan karyawan.

Mari Siapkan data akhir dan mulai prediksi.

Data Prapemrosesan

Mari lakukan pembersihan dan pemrosesan data sebelum melakukan prediksi

df.date
Keluaran

Jadi data yang kami miliki adalah selama 3 bulan. Dalam data, kami sudah memiliki kolom hari, jadi memiliki kolom bulan sudah cukup daripada tanggal lengkap.

df[‘month’]=df[‘date’].dt.bulan df.drop([‘date’],sumbu=1, tempat=Benar)

Sekarang mari kita lihat apakah ada nilai yang hilang —

# Ini akan Menampilkan persentase nilai yang hilang per kolom
df.isnull().sum() / len(df) * 100
Keluaran

Jadi kami hanya memiliki satu kolom — wip dan memiliki 42% nilai yang hilang. Mulai sekarang, Daripada mengisinya, mari kita hapus kolom ini.

df.drop([‘wip’],sumbu=1, tempat=Benar)

Dalam data, Anda dapat melihat beberapa kolom non-numerik. Jadi mari kita menyandikannya karena sebagian besar algoritme pembelajaran mesin hanya berfungsi dengan data numerik.

Mari menyandikan data dengan MultiColumnLabelEncoder —

!pip install MultiColumnLabelEncoder

Di sini kita telah menggunakan MultiColumnLabelEncoder karena sangat membantu dalam membalikkan pengkodean.

impor MultiColumnLabelEncoder Mcle = MultiColumnLabelEncoder.MultiColumnLabelEncoder() df = Mcle.fit_transform(df)

Jadi Data kami sudah siap. Mari kita pisahkan data menjadi kolom independen dan dependen —

x=df.jatuhkan([‘actual_productivity’],sumbu=1) y=df[‘actual_productivity’]

Memprediksi Produktivitas

Mari kita prediksi produktivitas menggunakan algoritma regresi dengan Python. Sebelum itu, mari kita siapkan data pelatihan dan pengujian —

dari sklearn.model_selection impor train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y,train_size=0.8,random_state=0)

Menggunakan Regresi Linier

dari sklearn.linear_model impor LinearRegression
dari sklearn.metrics impor mean_squared_error
dari sklearn.metrics impor mean_absolute_error
dari sklearn.metrics impor r2_score model_lr=LinearRegression() model_lr.fit(x_train,y_train) pred_test=model_lr.predict(x_test) print(“test_MSE:”,mean_squared_error(y_test, pred_test))
print(“test_MAE:”,mean_absolute_error(y_test, pred_test))
print(“R2_score:{}”.format(r2_score(y_test, pred_test)))
Keluaran

Mari kita tingkatkan kinerja menggunakan Regresi Hutan Acak.

Menggunakan Regresor Hutan Acak

dari sklearn.ensemble import RandomForestRegressor model_rfe = RandomForestRegressor(n_estimators=200,max_depth=5) model_rfe.fit(x_train, y_train) pred = model_rfe.predict(x_test)
print(“test_MSE:”,mean_squared_error(y_test, pred))
print(“test_MAE:”,mean_absolute_error(y_test, pred))
print(“R2_score:{}”.format(r2_score(y_test, pred)))
Keluaran

menggunakan XGBoost

impor xgboost sebagai xgb model_xgb = xgb.XGBRegressor(n_estimators=200, max_depth=5, learning_rate=0,1) model_xgb.fit(x_train, y_train) pred3=model_xgb.predict(x_test) print(“test_MSE:”,mean_testd_error(y_test ))
print(“test_MAE:”,mean_absolute_error(y_test, pred3))
print(“R2_score:{}”.format(r2_score(y_test, pred3)))
Keluaran

Jadi kita telah mencapai 0.07 — Mean Absolute Error dan 0.01 Mean Square error yang menyatakan bahwa model kita berkinerja sangat baik.

Jadi Dari semua algoritma, XGBoost telah bekerja dengan baik. Dengan cara ini, kita dapat memprediksi produktivitas karyawan.

Selamat Coding…….

Prediksi Produktivitas Karyawan yang Menggunakan Machine Learning Python awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Jeffrey Hayes