
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